파이썬 가상 개발 환경 구성: pyenv, virtualenv, autoenv, pip

파이썬 가상 개발 환경 구성: pyenv, virtualenv, autoenv, pip

파이썬에는 Python 2와 Python 3이 공존하고, 파이썬 별로 다수의 서브 버전이 존재합니다. 또한, 파이썬 커뮤니티는 엄청난 수의 패키지를 만들고 공유하고 있습니다. 이러한 패키지들은 개별적으로 여러 버전을 갖고 있습니다. 컴퓨터 한 대에 여러 파이썬 프로그램을 돌릴 경우, 파이썬 애플리케이션의 파이썬 런타임 버전과 파이썬 라이브러리 충돌 문제가 빈번하게 발생합니다. 이러한 문제는 개발 언어와 런타임 및 라이브러리가 전역적으로 설치되고 운영되기 때문에 발생합니다. 사실 이러한 문제는 개발 컴퓨터에서 더 심각하게 발생합니다.

이 문제는 파이썬 애플리케이션별로 독립적인 환경을 사용할 수 있도록 파이썬 환경을 가상화하는 방식을 통해서 해결 할 수 있습니다.

파이썬 가상화 환경을 구성하기 위해서는 pyenv, pyenv-virtualenv, autoenv, pip와 같은 툴이 필요합니다. 본 문서는 앞에서 언급한 툴을 이용하여 파이썬 실행 환경을 가상화하는 방법을 정리합니다. 데모 환경은 OS X와 리눅스로 한정합니다.

이 문서에서 다룰 파이썬 툴은 다음과 같이 요약할 수 있습니다.

  1. pyenv
    • 파이썬 버전을 관리하는 툴.
    • 하나의 컴퓨터에 다양한 파이썬 버전을 설치하고 관리.
    • 프로젝트 홈페이지: https://github.com/pyenv/pyenv
  2. pyenv-virtualenv
    • virtualenv은 파이썬 환경을 격리하는 툴.
    • pyenv-virtualenv은 virtualenv의 pyenv 확장 플러그인.
    • 파이썬 버전과 라이브러리의 완전한 격리 환경을 제공.
  3. autoenv
    • autoenv는 디렉터리 이동 시 실행되는 스크립트
    • pyenv-virtualenv 사용 시 불편한 수작업을 자동화.
    • 특정 프로젝트 폴더로 들어가면 .env파일 실행하여 가상환경 활성화.
  4. pip
    • 파이썬 라이브러리를 관리.

본 문서는 python2가 이미 설치되어 있음을 가정합니다. 파이썬을 설치해야 한다면 다음 문서를 참조하시기 바랍니다.

파이썬 버전 관리: pyenv

pyenv를 사용하면 파이썬 설치가 편리하고, 각 파이썬 런타임 버전을 효과적으로 관리할 수 있습니다. 하나의 컴퓨터에서 여러 파이썬 런타임 버전을 운영할 수 있습니다. pyenv를 사용하여 파아썬을 설치할 때, root 권한이 필요 없습니다. 일반 사용자 권한으로 언제든지 파이썬을 설치하고 버전을 지정하여 사용할 수 있습니다.

pyenv 프로젝트 레파지토리는 위치는 다음과 같습니다.

pyenv 사전 준비사항

운영체제별 사전 준비사항은 다음과 같습니다.

맥, OS X 사전 준비사항

pyenv를 OS X(맥)에 설치하기 위해서는 xcode command line tools과 zlib가 먼저 설치되어 있어야 합니다. xcode command line tools과 zlib를 OS X에서 설치하는 명령은 다음과 같습니다. 두 명령을 터미널 상에서 실행합니다.

$ sudo xcode-select --install
$ brew install homebrew/dupes/zlib

CentOS, Oracle Linux, RHEL 사전 준비사항

yum으로 다음과 같은 패키지를 설치합니다. 다음 예시에서 역슬래쉬(’\‘)는 다음 라인과 연결을 의미합니다. 다음 예시는 한줄로 입력된 명령입니다.

sudo yum install -y zlib-devel bzip2 bzip2-devel \
  readline-devel sqlite sqlite-devel openssl-devel xz xz-devel curl git

Ubuntu 사전 준비사항

우분투 환경에서는 다음과 같은 패키지를 설치합니다.

sudo apt-get install -y make build-essential \
 libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \
 wget curl llvm libncurses5-dev libncursesw5-dev \
 xz-utils tk-dev git python-pip

pyenv 설치

pyenv 은 OS별로 다음과 같이 설치할 수 있습니다.

OS X에서 pyenv 설치: homebrew

맥에서 pyenv를 homebrew로 설치하는 것이 편리합니다. 맥에서 pyenv를 설치할 때 다음과 같은 명령을 사용합니다.

$ brew install pyenv

pyenv 업그레이드는 다음 명령을 사용합니다.

$ brew upgrade pyenv

리눅스에서 pyenv 설치: pyenv-installer

pyenv-installer는 pyenv 설치 스크립트 입니다. rbenv-installer의 스타일을 빌려서 만든 것입니다. pyenv-installer는 리눅스용 쉘 스크립트 파일입니다. pyenv-installer를 이용하여 pyenv를 설치하기 위해서는 curl과 git이 사전에 설치되어 있어야 합니다. pyenv-installer를 이용한 설치 명령은 다음과 같습니다.

다음 예제의 첫 번째 명령에서 역슬래쉬(’\‘)는 다음 라인과 연결을 의미합니다.

[opc@b4b8b6 Python-2.7.12]$ curl -L \
https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer \
| bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
104  2099  104  2099    0     0   3170      0 --:--:-- --:--:-- --:--:--  6155
Initialized empty Git repository in /home/opc/.pyenv/.git/
remote: Counting objects: 4431, done.
########
# 로그 생략
########
WARNING: seems you still have not added 'pyenv' to the load path.

# Load pyenv automatically by adding
# the following to ~/.bash_profile:

export PATH="/home/opc/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
[opc@b4b8b6 Python-2.7.12]$

pyenv-installer“를 이용하여 pyenv를 설치하면, 다음과 같은 pyenv 플러그인도 설치됩니다.

  • pyenv-doctor
  • pyenv-pip-rehash
  • pyenv-update
  • pyenv-virtualenv
  • pyenv-which-ext

환경변수 적용 및 업데이트

다음 명령을 터머널에서 수행하여 환경변수를 등록합니다. 다음 코드는 bash를 사용하는 상황을 가정합니다. zsh를 사용하실 때는 “~/.bash_profile“을 “~/.zshrc“로 변경하여 실행해야 합니다.

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

pyenv를 최신 버전으로 업데이트해야 할 경우 다음 명령을 수행합니다.

[opc@b4b8b6 ~]$ pyenv update
Updating /home/opc/.pyenv...
From https://github.com/yyuu/pyenv
 * branch            master     -> FETCH_HEAD
########
# 로그 생략
########
Updating /home/opc/.pyenv/plugins/pyenv-which-ext...
From https://github.com/yyuu/pyenv-which-ext
 * branch            master     -> FETCH_HEAD
Already up-to-date.
[opc@b4b8b6 ~]$

pyenv 설치 점검

이제 pyenv 설치가 완료되었습니다. pyenv 정상 설치 여부는 다음 명령으로 확인할 수 있습니다.

[opc@b4b8b6 ~]$ pyenv install --list
Available versions:
  2.1.3
  2.2.3
  2.3.7
########
# 로그 생략
########
  stackless-3.4.1
  stackless-3.4.2
[opc@b4b8b6 ~]$ pyenv install --list | wc -l
323
[opc@b4b8b6 ~]$ pyenv --version
pyenv 1.1.3

위 예시와 같이 출려된다면 정상 설치로 간주할 수 있습니다.

pyenv 사용 방법

pyenv는 다음과 형태로 실행됩니다.

pyenv {sub-command} [{parameters}....]

pyenv가 제공하는 서브 명령은 다음과 같습니다.

서브 명령 설명
local 현재 디렉터리에 python 버전 확인 및 python 버전 지정
global 전역으로 설정된 python 버전
shell shell에 파이썬 버전을 지정
install python-build를 이용하여 파이썬 버전을 설치
uninstall 지정한 버전의 파이썬을 삭제
version 현재 활성화된 파이썬 버전 출력
versions pyenv로 설치되어 이용 가능한 버전을 출력
which 활성화된 파이썬 명령의 위치 출력
whence 지정한 명령을 포함하는 모든 파이썬 버전 출력

pyenv를 이용한 python 설치

다음과 같은 명령으로 python 3.5.3을 설치할 수 있습니다.

$ pyenv install 3.5.3
Installing Python-3.5.3...
Installed Python-3.5.3 to /Users/taewan/.pyenv/versions/3.5.3

$ pyenv versions
* system (set by /Users/taewan/.pyenv/version)
 3.5.3
$

pyenv로 설치된 python 런타임은 ~/.pyenv/versions에 설치됩니다.

pyenv 글로벌 설정

pyenv를 이용하여 시스템 수준의 python 버전을 설정할 할 수 있습니다. pyenv를 사용하면 python과 python3 명령을 python 한 개 명령으로 통일할 수 있습니다. pyevn 명령은 패턴은 다음과 같습니다.

pyenv install {version}

다음은 컴퓨터의 글로벌 파이썬 버전을 파이썬 2.7.12에서 새로 설치한 파이썬 3.5.3으로 변경하는 예입니다. 아래 명령을 수행한 후, python을 실행하면 Python 3.5.3 버전이 실행됩니다

[opc@b4b8b6 ~]$ pyenv versions
* system
  3.5.3 (set by /home/opc/.pyenv/version)
[opc@b4b8b6 ~]$ python --version    ## 현재 파이썬 버전
Python 2.7.12
[opc@b4b8b6 ~]$ pyenv global 3.5.3  ## 글로벌 파이썬 설정 변경
[opc@b4b8b6 ~]$ python --version    ## 현재 파이썬 버전
Python 3.5.3
[opc@b4b8b6 ~]$ pyenv versions      ## pyenv 활성 버전 확인
  system
* 3.5.3 (set by /home/opc/.pyenv/version)
[opc@b4b8b6 ~]$

pyenv 로컬 설정

특정 디렉터리에 활성화되는 파이썬 버전을 지정할 수 있습니다. 파이썬 버전이 지정되지 않은 디렉터리에는 global 설정이 적용됩니다. 다음은 pyenv globalpyenv local을 사용하는 방법의 예시입니다.

[opc@b4b8b6 ~]$ pyenv versions           ## global 설정 3.5.3
  system
  2.7.13
* 3.5.3 (set by /home/opc/.pyenv/version)
[opc@b4b8b6 ~]$ python -V                ## Global 파이썬 버전
Python 3.5.3
[opc@b4b8b6 ~]$ mkdir py2.7
[opc@b4b8b6 ~]$ cd py2.7/
[opc@b4b8b6 py2.7]$ pyenv local 2.7.13   ## local 설정 2.7.13
[opc@b4b8b6 py2.7]$ python -V
Python 2.7.13
[opc@b4b8b6 py2.7]$ ls -al
total 12
drwxrwxr-x   2 opc opc 4096 Sep  8 01:47 .
drwx------. 10 opc 500 4096 Sep  8 01:47 ..
-rw-rw-r--   1 opc opc    7 Sep  8 01:47 .python-version
[opc@b4b8b6 py2.7]$ cat .python-version  ## local 설정 파일
2.7.13
[opc@b4b8b6 py2.7]$ cd ..                ## global 설정 3.5.3
[opc@b4b8b6 ~]$ python -V
Python 3.5.3
[opc@b4b8b6 ~]$

pyenv local“를 실행하면 해당 디렉터리에 .python-version 파일이 생기고 이 파일에 활성화될 파이썬 버전이 기록됩니다.

파이썬 가상 환경 구성하기: pyenv-virtualenv

virtualenv를 사용하면 파이썬 런타임의 독립성을 한층 더 높일 수 있습니다. pyenv가 파이썬 버전을 관리하는 기능을 제공한다면, virtualenv는 파이썬 구동 환경을 관리합니다. pyenv를 이용하면 컴퓨터에 파이썬 버전 별로 1개의 파이썬 런타임을 설치하고 관리할 수 있습니다. virtualenv를 사용하면 파이썬 버전을 세분화하여 여러 개별 환경으로 구분하여 관리하는 기능을 제공합니다. 예를 들어서 python 3.5.2 런타임을 여러개 구성할 수 있고, 애플리케이션 별로 할당할 수 있습니다. 따라서, pyenv와 virtaulenv를 사용하면 매우 효과적입니다. 이러한 이유로 pyenv의 virtualenv 플러그인을 사용하는 것이 일반적입니다. pyenv-virtualenv 프로젝트는 https://github.com/yyuu/pyenv-virtualenv 에서 개발되고 있습니다.

pyenv-virtualenv 설치

pyenv-virtualenv는 OS별로 다음과 같이 설치할 수 있습니다.

OS X에서 pyenv-virtualenv 설치: homebrew

OS X는 homebrew를 이용하여 설치할 수 있습니다.

$ brew install pyenv-virtualenv

리눅스 pyenv-virtualenv 설치: pyenv-installer

pyenv를 pyenv-installer로 설치할 때 pyenv-virtualenv 설치가 포함됩니다. pyenv-installer로 pyenv가 설치되었다면 별도의 조치가 필요 없습니다.

환경 변수 설정

OS X와 리눅스에 pyenv-virtualenv 설치가 완료되면, 다음 명령을 터미널에서 수행합니다. 다음 코드는 bash를 사용하는 상황을 가정합니다. zsh를 사용하실 때는 “~/.bashrc“을 “~/.zshrc“로 변경하여 실행해야 합니다.

$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

pyenv-virtualenv 사용하기

pyenv로 파이썬을 설치하면 .pyenv/versions 디렉터리에 2.7.x, 3.4.x등의 디렉터리가 만들어 지고 파이썬 런타임이 관리 됩니다. 앞에서 설명한 것처럼 pyenv의 관리 최소 단위는 파이썬 버전입니다. virtualenv를 사용하면 동일한 파이썬 버전을 여러 개의 개별적인 환경으로 구분하여 관리합니다.

virtualenv 플러그인을 사용하면 버전과 추가적인 이름을 넣어서 파이썬 런타임을 관리할 수 있습니다. 같은 파이썬 버전이지만, 애플리케이션 별로 패키지를 다르게 설치하고 싶은 경우 매우 유용합니다. pyenv-virtualenv이 주는 가장 중요한 혜택은 python 프로젝트마다 각각의 가상환경 제공할 수 있다는 것입니다.

다음과 같은 명령으로 파이썬 환경을 구성합니다.

$ pyenv virtualenv <vertualenv-name>

은 생략 가능합니다. 버전을 생략할 경우 현재 시스템 버전으로 가상환경이 설정됩니다. virtualenv 플러그인으로 만든 가상환경인 경우 activate, deactivate 명령을 이용하여 활성화/비활성화합니다. 가상환경을 활성화/비활성화를 위해서는 다음 명령을 사용합니다.

$ pyenv activate <vertualenv-name>

가상환경 종료는 다음 명령을 사용합니다.

$ pyenv deactivate

가상환경을 삭제할 경우 다음과 같은 명령을 사용합니다.

$ pyenv uninstall <version>/<vertualenv-name>

case01: py27 가상환경 생성

다음은 파이썬 2.7.13 버전으로 py27 가상환경을 만드는 데모입니다.

[opc@b4b8b6 ~]$ pyenv version            ## 현재 버전 확인
3.5.3 (set by /home/opc/.pyenv/version)  
[opc@b4b8b6 ~]$ pyenv versions           ## 설치 버전 확인
  system
  2.7.13
* 3.5.3 (set by /home/opc/.pyenv/version)
  3.6.2
[opc@b4b8b6 ~]$ pyenv virtualenv 2.7.13 py27  ## py27 가상환경 생성
Collecting virtualenv
  Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB)
    100% |████████████████████████████████| 1.8MB 501kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-15.1.0
New python executable in /home/opc/.pyenv/versions/2.7.13/envs/py27/bin/python2.7
Also creating executable in /home/opc/.pyenv/versions/2.7.13/envs/py27/bin/python
Installing setuptools, pip, wheel...done.
Requirement already satisfied: setuptools in /home/opc/.pyenv/versions/2.7.13/envs/py27/lib/python2.7/site-packages
Requirement already satisfied: pip in /home/opc/.pyenv/versions/2.7.13/envs/py27/lib/python2.7/site-packages
[opc@b4b8b6 ~]$ pyenv activate py27     ## py27 가상환경 활성화
pyenv-virtualenv: prompt changing will be removed from future release. configure "export PYENV_VIRTUALENV_DISABLE_PROMPT=1" to simulate the behavior.
(py27) [opc@b4b8b6 ~]$ python -V        ## py27 버전 확인
Python 2.7.13
(py27) [opc@b4b8b6 ~]$ pyenv deactivate ## py27 가상환경 종료
[opc@b4b8b6 ~]$ python -V               ## py27 가상환경 종료 후 버전 확인
Python 3.5.3
[opc@b4b8b6 ~]$

case02: py36 가상환경 생성

다음은 파이썬 3.6.2 버전으로 py36 가상환경을 만드는 데모입니다.

[opc@b4b8b6 ~]$ pyenv version            ## 현재 버전 확인
3.5.3 (set by /home/opc/.pyenv/version)  
[opc@b4b8b6 ~]$ pyenv versions           ## 설치 버전 확인
  system
  2.7.13
  2.7.13/envs/py27
* 3.5.3 (set by /home/opc/.pyenv/version)
  3.6.2
  py27
[opc@b4b8b6 ~]$ pyenv virtualenv 3.6.2 py36  ## py36 가상환경 생성
Requirement already satisfied: setuptools in /home/opc/.pyenv/versions/3.6.2/envs/py36/lib/python3.6/site-packages
Requirement already satisfied: pip in /home/opc/.pyenv/versions/3.6.2/envs/py36/lib/python3.6/site-packages
[opc@b4b8b6 ~]$ python -V               ## 현재 버전 확인
Python 3.5.3
[opc@b4b8b6 ~]$ pyenv activate py36     ## py36 가상환경 활성화
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
(py36) [opc@b4b8b6 ~]$ python -V        ## py36 가상환경의 파이썬 버전
Python 3.6.2
(py36) [opc@b4b8b6 ~]$ pyenv deactivate ## py36 가상환경 비활성화
[opc@b4b8b6 ~]$ python -V               ## 현재 버전 확인
Python 3.5.3
[opc@b4b8b6 ~]$ pyenv versions          ## 현재 설치 버전 확인
  system
  2.7.13
  2.7.13/envs/py27
* 3.5.3 (set by /home/opc/.pyenv/version)
  3.6.2
  3.6.2/envs/py36
  py27
  py36
[opc@b4b8b6 ~]$

case03: py36 가상환경 제거

다음은 py36 가상환경을 제거하는 데모입니다.

[opc@b4b8b6 ~]$ pyenv versions                       ## 설치 버전 확인
  system
  2.7.13
  2.7.13/envs/py27
* 3.5.3 (set by /home/opc/.pyenv/version)
  3.6.2
  3.6.2/envs/py36
  py27
  py36
[opc@b4b8b6 ~]$ pyenv uninstall  3.6.2/envs/py36    ## 파이썬 버전 삭제
pyenv-virtualenv: remove /home/opc/.pyenv/versions/3.6.2/envs/py36? y
[opc@b4b8b6 ~]$ pyenv versions                      ## 설치 버전 확인
  system
  2.7.13
  2.7.13/envs/py27
* 3.5.3 (set by /home/opc/.pyenv/version)
  3.6.2
  py27
[opc@b4b8b6 ~]$

귀차니즘: autoenv

pyenv-virtualenv의 단점은 가상환경을 활성화하기 위해서 pyenv activate를 실행해야 한다는 것입니다. autoenv는 Python 프로젝트 진입시점시에 자동으로 virtualenv 환경 로딩하는 기능을 제공합니다. 가상 환경 활성화에 대한 귀차니즘을 없앨수 있습니다.

프로젝트 홈페이지는 다음과 같습니다.

설치

autoenv는 OS별로 다음과 같이 설치할 수 있습니다.

OS X에서 autoenv 설치

다음 코드는 bash를 사용하는 상황을 가정합니다. zsh를 사용하실 때는 “~/.bashrc“을 “~/.zshrc“로 변경하여 실행해야 합니다.

$ brew install autoenv
$ echo "source $(brew --prefix autoenv)/activate.sh" >> ~/.bashrc
$ source ~/.bashrc

리눅스에서 autoenv 설치: pip

다음 코드는 bash를 사용하는 상황을 가정합니다. zsh를 사용하실 때는 “~/.bashrc“을 “~/.zshrc“로 변경하여 실행해야 합니다.

$ pip install autoenv
$ echo "source `which activate.sh`" >> ~/.bashrc
$ source ~/.bashrc

리눅스에서 autoenv 설치: 소스 설치

다음 코드는 bash를 사용하는 상황을 가정합니다. zsh를 사용하실 때는 “~/.bashrc“을 “~/.zshrc“로 변경하여 실행해야 합니다.

$ git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv
$ echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc
$ source ~/.bashrc

autoenv 설정

데모를 위하여 project_py36 디렉터리를 만들고 .env파일을 추가합니다. ~/project_py36/.env 파일은 다음과 같은 설정을 포함합니다.

echo “***********************************”
echo “Python Virtual Env > py36”
echo “***********************************”

pyenv shell py36
pyenv activate

터미널에서 project_py36 디렉터리로 이동하면 py36 환경이 활성화되는 것을 확인할 수 있습니다.

[opc@b4b8b6 ~]$ pyenv versions
* system (set by /home/vagrant/.pyenv/version)
  2.7.13
  2.7.13/envs/py27
  3.5.3
  3.6.2
  3.6.2/envs/py36
  py27
  py36
[opc@b4b8b6 ~/]$ cd project_py36
autoenv:
autoenv: WARNING:
autoenv: This is the first time you are about to source /home/vagrant/project_py36/.env:
autoenv:
autoenv:     --- (begin contents) ---------------------------------------
autoenv:     echo “***********************************”
autoenv:     echo “Python Virtual Env > py36”
autoenv:     echo “***********************************”
autoenv:
autoenv:     pyenv shell py36
autoenv:     pyenv activate
autoenv:
autoenv:
autoenv:     --- (end contents) -----------------------------------------
autoenv:
autoenv: Are you sure you want to allow this? (y/N) y
“***********************************”
“***********************************”
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
(py36) [opc@b4b8b6 ~/project_py36]$ python --version
Python 3.6.2

.env 파일은 형상관리에서 제외되는 것이 바람직합니다. 가상환경 이름은 프로젝트 범위를 넘어서는 설정이기 때문입니다. .env 파일은 형상관리에서 제외하는 것이 바람직합니다. 프로젝트 최상위 디렉터리에 .gitignore 파일을 만들고 버전 관리에서 .env파일을 제외하기 위해서 다음과 같이 추가합니다.

.env

파이썬 라이브러리 관리: pip

pip는 파이썬 패키지(라이브러리) 관리하는 프로그램입니다. 라이브러리가 다른 라이브러리를 의존성을 갖는다면, 관련된 모든 라이브러리를 설치해야 합니다. pip는 라이브러리 의존성 관리, 설치, 개별적인 버전 관리 기능을 제공합니다. pip는 파이썬 2.7.9 버전 이후와 파이썬 3.4 버전 이상에는 기본적으로 설치되어있습니다.

기본 설치된 있는 pip는 버전이 낮은 경우가 많습니다. 다음 명령을 이용하여 업그레이드하는 것이 좋습니다.

sudo pip install -U pip

pyenv와 virtualenv로 파이썬 환경을 가상화할 경우 python과 python3은 python으로 통일됩니다. 이런 모습은 pip와 pip3에서도 동일합니다. python3의 pip3는 pip로 호출됩니다.

pip 기본 사용법

pip의 기본 사용법은 다음과 같습니다.

pip 명령 설명
pip search {키워드} 키워드로 관련 패키지를 검색합니다.
pip install {패키지명} 지정한 패키지를 설치합니다.
pip uninstall {패키지명} 지정한 패키지를 삭제합니다.
pip install –upgrade {패키지} 지정한 패키지를 업데이트합니다.
pip show {패키지} 지정한 패키지의 버전을 출력합니다.
pip list 전체 패키지 목록을 출력합니다.

pip로 패키지 목록 관리하기

pip는 현재 사용 중인 파이썬 환경의 모든 라이브러리를 조회하여 “requirement” 파일을 만드는 기능을 제공합니다. 또한 “requirement” 파일을 읽어서 기술된 모든 패키지를 설치하는 기능도 제공합니다.

현재 파이썬 환경에 설치된 모든 라이브러리를 조회하여 “requirement” 파일을 만드는 명령은 다음과 같습니다.

$ pip freeze > requirements.txt

requirement” 파일에는 현재 설치된 모든 라이브러리 목록이 저장됩니다. “requirement” 파일은 다음과 같은 형태의 정보를 포함합니다.

ipython==6.1.0
ipython-genutils==0.2.0
ipywidgets==7.0.0
jedi==0.10.2
Jinja2==2.9.6
jsonschema==2.6.0
jupyter==1.0.0
jupyter-client==5.1.0
jupyter-console==5.2.0
jupyter-core==4.3.0
MarkupSafe==1.0
mistune==0.7.4
nbconvert==5.3.1
nbformat==4.4.0
notebook==5.0.0
pandocfilters==1.4.2
pexpect==4.2.1
pickleshare==0.7.4
prompt-toolkit==1.0.15

requirement” 파일에 기술된 모든 라이브러리를 설치하는 pip 명령은 다음과 같습니다.

pip install -r requirements.txt

요약

지금까지 파이썬 환경을 가상화하고 라이브러리를 관리하는 파이썬 툴에 대하여 살펴보았습니다. pyenv와 virtualenv로 파이썬 환경을 독집적으로 구성하고 관리할 수 있습니다. 가상화되어 외부와 격리된 파이썬 환경은 pip로 패키지를 관리할 수 있습니다. 마지막으로 autoenv를 통해서 pyenv와 virtualenv로 만들어진 파이썬 가상 환경을 활성화하는 추가 작업을 자동화 할 수 있습니다.

참고자료

김태완 avatar
작성자: 김태완
1999년 부터 Java, Framework, Middleware, SOA, DB Replication, Cache, CEP, NoSQL, Big Data, Cloud를 키워드로 살아왔습니다. 현재는 빅데이터와 Machine Learning을 중점에 두고 있습니다.
E-mail: taewanme@gmail.com