고통의 Python 개발환경.
Python으로 개발을 할 때, 자신의 개발환경에서 단 하나의 프로젝트만 개발한다면 별 문제가 없지만 여러 프로젝트를 진행하게 되면 애로사항이 만개합니다. 예를 들어 어느 프로젝트는 django 버전 1.11을 사용하지만 다른 프로젝트에서 2 이상을 사용한다면 의존성 버전 문제가 발생합니다. Python은 기본적으로 하나의 의존성에 대해 한 가지 버전만 설치가 가능하기 때문입니다. 이 문제로 많은 Python 개발자들이 고통을 받아왔고, 아직도 고통받고 있습니다. 이것에 대해 많은 질문을 받아왔고, 이 글을 통해 보고서 따라할 수 있는 가이드를 작성해보기로 했습니다.
설명에 앞서서.
본 가이드의 접근법은 Windows에선 사용할 수 없습니다. 전략의 핵심인 pyenv가 Windows를 지원하지 않기 때문입니다.
virtualenv와 virtualenvwrapper.
위에서도 언급했지만 Python은 기본적으로 하나의 의존성에 대해 한 가지 버전만 설치가 가능합니다. 여러 프로젝트를 진행하기 위해 Python 진영에서는 virtualenv라는 툴을 사용합니다. 하지만 virtualenv는 기본적으로 사용법도 불편하고, virtualenv 관련으로 생성되는 수많은 디렉토리가 프로젝트마다 생기므로 관리가 성가십니다. 이러한 문제의 해소를 위해 virtualenvwrapper가 등장합니다. virtualenv 관련 디렉토리를 한 곳에 몰아서 관리해주고, activate 등의 작업을 보다 편하게 할 수 있도록 도와줍니다.
pyenv.
virtualenv는 프로젝트마다 의존성을 분리하게 하는데엔 성공했지만 Python 버전 자체가 여러가지 필요한 경우를 커버하지 못합니다. Python 버전을 여러가지 설치하면 Python 실행이 여러모로 지저분해집니다. 이 문제의 해결을 위해 pyenv가 등장했습니다. Python을 여러 버전을 설치할 수 있도록 도와주고, 현재 사용할 Python 버전을 정할 수 있게 해줍니다.
pyenv-virtualenvwrapper.
pyenv와 virtualenvwrapper는 둘 다 Python 개발자에게 필요한 도구였기에 둘을 합친 확장이 등장합니다. pyenv를 통해 Python 버전을 설치하고 virtualenvwrapper를 통해 virtualenv를 관리합니다.
실제로 세팅하기.
1. pyenv 설치.
가장 먼저 pyenv를 설치해야합니다.
Linux.
curl https://pyenv.run | bash
macOS.
brew install pyenv
2. Shell 세팅.
.bash_profile
에 pyenv를 세팅해야합니다.
(OS와 Shell 종류에 따라 파일명이 .zshenv
, .bashrc
로 다를 수 있습니다.)
.bash_profile
을 열어서 맨 아래에 다음 내용을 추가해주세요.
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
저장한 뒤에 다음 명령어로 Shell을 재실행하면 pyenv를 사용할 수 있게 됩니다.
exec "$SHELL"
3. Python 설치.
virtualenv와 virtualenvwrapper는 Python이 있어야 설치할 수 있습니다. 다음 명령어로 Python을 설치해주세요.
pyenv install 3.7.2
pyenv global 3.7.2
4. pyenv-virtualenvwrapper 설치.
pyenv-virtualenvwrapper는 pyenv의 플러그인입니다. 다음 방법으로 설치할 수 있습니다.
Linux.
git clone https://github.com/pyenv/pyenv-virtualenvwrapper.git $(pyenv root)/plugins/pyenv-virtualenvwrapper
macOS.
brew install pyenv-virtualenvwrapper
5. (또) Shell 세팅.
이번엔 .bash_profile
에 pyenv-virtualenvwrapper를 세팅해야합니다.
(OS와 Shell 종류에 따라 파일명이 .zshenv
, .bashrc
로 다를 수 있습니다.)
.bash_profile
을 열어서 아까 추가한 소스 코드 아래로 다음 내용을 추가해주세요.
pyenv virtualenvwrapper_lazy
저장한 뒤에 다음 명령어로 Shell을 재실행하면 pyenv-virtualenvwrapper를 사용할 수 있게 됩니다.
exec "$SHELL"
개발 환경 사용법.
Python 버전 설치.
pyenv install [version]
현재 설치된 Python 버전 목록.
pyenv versions
전역 Python 버전 변경.
pyenv global [version]
프로젝트를 위해 virtualenv 생성.
mkvirtualenv [project name]
virtualenv 활성화.
workon [project name]
virtualenv 비활성화.
deactivate
현재 디렉토리를 프로젝트의 Home 디렉토리로 설정하기.
setvirtualenvproject
virtualenv 삭제.
rmvirtualenv [project name]
virtualenv 목록.
lsvirtualenv
에디터/IDE와의 연동.
Visual Studio Code.
기본적으로 VSCode에 Python 플러그인이 설치되어 있어야 합니다.
먼저 다음 명령어로 Python 바이너리의 위치를 찾습니다.
workon [project name]
which python
/Users/item4/.virtualenvs/blog/bin/python
그 다음, VSCode에서 명령 팔레트를 열고 Python: Select Interpreter
라고 입력한 후 Enter를 눌러주세요
나타난 입력칸에 아까 찾은 경로를 입력하면 세팅 완료입니다.
PyCharm.
먼저 다음 명령어로 Python 바이너리의 위치를 찾습니다.
workon [project name]
which python
/Users/item4/.virtualenvs/blog/bin/python
그 다음 PyCharm에서 프로젝트를 생성한 후 Preferences 창을 열어주세요.
좌측 메뉴에 Project: [name]
이 있고, 확장하면 Python Interpreter
메뉴가 나옵니다.
해당 메뉴에 들어가면 우측 상단에 톱니바퀴 버튼이 있는데, 눌러서 Add 버튼을 눌러주세요.
Virtuanenv Environment 메뉴에서 Existing environment를 선택하고 경로 선택창에서 아까 찾은 경로를 선택해주세요. OK버튼을 누르면 PyCharm에서 해당 virtualenv를 선택할 수 있게 되므로 선택하면 그때부터 연동됩니다.