Dev

pyenv-virtualenvwrapper로 Python 개발 환경 세팅하기

February 3, 2019

pyenv-virtualenvwrapper로 Python 개발 환경 세팅하기

고통의 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 라고 입력한 후 Ender를 눌러주세요

VSCode 명령 팔레트

나타난 입력칸에 아까 찾은 경로를 입력하면 세팅 완료입니다.

VSCode에서 interpreter 선택하기

PyCharm

먼저 다음 명령어로 Python 바이너리의 위치를 찾습니다.

$ workon [project name]
$ which python
/Users/item4/.virtualenvs/blog/bin/python

그 다음 PyCharm에서 프로젝트를 생성한 후 Preferences 창을 열어주세요.
좌측 메뉴에 Project: [name]이 있고, 확장하면 Python Interpreter 메뉴가 나옵니다.

PyCharm Preferences 메뉴

해당 메뉴에 들어가면 우측 상단에 톱니바퀴 버튼이 있는데, 눌러서 Add 버튼을 눌러주세요.

PyCharm interpreter 선택 인터페이스

Virtuanenv Environment 메뉴에서 Existing environment를 선택하고 경로 선택창에서 아까 찾은 경로를 선택해주세요.
OK버튼을 누르면 PyCharm에서 해당 virtualenv를 선택할 수 있게 되므로 선택하면 그때부터 연동됩니다.

PyCharm에서 virtualenv 선택하기