Homebrew 설치하기 [페이지 바로가기]
homebrew는 macOS용 패키지 관리자이다.
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
install
이나 upgrade
전에는 homebrew를 최신버전으로 유지해준다.
$ brew update
pyenv는 local환경에서 python의 여러 버전을 설치할 수 있게 해준다. 즉, python 버전 관리 시스템이다.
$ brew install pyenv
.zshrc
파일 설정
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
$ source ~/.zshrc
- 설치된 파이썬 버전확인
$ pyenv versions
* system (set by /Users/jeongdaye/.pyenv/version)
- 설치할 수 있는 python 버전확인
$ pyenv install --list
Available versions:
2.1.3
2.2.3
2.3.7
2.4
2.4.1
2.4.2
...
- 특정 버전의 python 설치
$ pyenv install 3.7.2
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.7.2.tar.xz...
-> https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz
Installing Python-3.7.2...
python-build: use readline from homebrew
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
Installed Python-3.7.2 to /Users/jeongdaye/.pyenv/versions/3.7.2
이때 다음과 같은 오류가 발생할 수 있다. 아래와 같이 오류를 해결해준 후 다시 명령어를 실행하면된다.
- global 설정
$ pyenv global 3.7.2
터미널을 종료 후 다시 시작하면 python의 version이 3.7.2로 바뀐 것을 확인할 수 있다.
$ python
Python 3.7.2 (default, Mar 4 2019, 17:24:35)
[Clang 10.0.0 (clang-1000.10.44.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
BUILD FAILED (OS X 10.14.2 using python-build 20180424)
Inspect or clean up the working tree at /var/folders/02/dsdr2ndd5jj8p8h5vpw3_n300000gn/T/python-build.20190217200742.23725
Results logged to /var/folders/02/dsdr2ndd5jj8p8h5vpw3_n300000gn/T/python-build.20190217200742.23725.log
Last 10 log lines:
File "/private/var/folders/02/dsdr2ndd5jj8p8h5vpw3_n300000gn/T/python-build.20190217200742.23725/Python-3.7.2/Lib/ensurepip/__main__.py", line 5, in <module>
sys.exit(ensurepip._main())
File "/private/var/folders/02/dsdr2ndd5jj8p8h5vpw3_n300000gn/T/python-build.20190217200742.23725/Python-3.7.2/Lib/ensurepip/__init__.py", line 204, in _main
default_pip=args.default_pip,
File "/private/var/folders/02/dsdr2ndd5jj8p8h5vpw3_n300000gn/T/python-build.20190217200742.23725/Python-3.7.2/Lib/ensurepip/__init__.py", line 117, in _bootstrap
return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
File "/private/var/folders/02/dsdr2ndd5jj8p8h5vpw3_n300000gn/T/python-build.20190217200742.23725/Python-3.7.2/Lib/ensurepip/__init__.py", line 27, in _run_pip
import pip._internal
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1
- zlib 설치
$ brew install zlib
$ vim ~/.zshrc
# For compilers to find zlib you may need to set:
export LDFLAGS="-L/usr/local/opt/zlib/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include"
# For pkg-config to find zlib you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig"
$ source ~/.zshrc
Virtual Environment를 줄여서 virtualenv 라고한다. virtualenv 는 시스템에 설치된 파이썬에 영향을 주지 않고 파이썬의 가상 환경을 유지할 수 있도록 해준다. 가상 환경에서는 파이썬 실행파일, 라이브러리 설치 장소 등이 따로 제공되며, 이 곳에 패키지를 설치해도 시스템의 파이썬이나 다른 가상 환경에는 영향을 주지 않도록 설계되어 있다.
$ brew install pyenv-virtualenv
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
$ source ~/.zshrc
$ pyenv virtualenv <version> <env_name>
# example
# python 3.7.2 version인 sample-env라는 이름의 가상환경 생성
# version을 생략할 경우에는 global로 설정된 버전으로 생성
$ pyenv virtualenv 3.7.2 sample-env
Looking in links: /var/folders/0z/rb_yr2g57cz833kvx98dc3y40000gn/T/tmp5gzn2iis
Requirement already satisfied: setuptools in /Users/jeongdaye/.pyenv/versions/3.7.2/envs/sample-env/lib/python3.7/site-packages (40.6.2)
Requirement already satisfied: pip in /Users/jeongdaye/.pyenv/versions/3.7.2/envs/sample-env/lib/python3.7/site-packages (18.1)
우선 가상환경을 설정할 프로젝트에 들어간다.
$ pyenv activate <env_name>
$ pyenv local <env_name>
$ pyenv versions
system
3.7.2
3.7.2/envs/sample-env
* sample-env (set by PYENV_VERSION environment variable)
위와 같이 sample-env에 *가 되어있으면 설정이 완료된 것이다.
- 가상환경의 패키지 목록 확인
$ pip list
Package Version
---------- -------
pip 18.1
setuptools 40.6.2
다음과 같이 초기환경에는 pip
와 setuptools
만 설치되어있다.
$ pyenv deactivate
설치 전에 우선 pip를 최신버전으로 upgrade 해준다.
$ python -m pip install --upgrade pip
$ pip install Django==2.1.7
$ pip list
Package Version
---------- -------
Django 2.1.7
pip 19.0.2
pytz 2018.9
setuptools 40.6.2