본문 바로가기

프로그래밍/파이썬

[파이썬] pyenv, virtualenv 설치 및 가상환경 생성하기

pyenv, virtualenv

Pyenv와 Virtualenv 설정하기

OS : Ubuntu 16.04 LTS
Mac OS X : 10.11

왜 설치해야 하죠?

pyenv는 로컬환경(즉, 나의 컴퓨터)에 다양한 파이썬 버전을 확인할 수 있습니다. 요약을 하면 "쉽게 설치할 수 있다" 라는 것을 강조하고 싶습니다. "엥!? 파이썬만 설치하면 되는거 아냐?" 라고 생각하실 수 있지만, 사실 python에 기반한 수많은 배포판들이 존재합니다.

  • Anaconda : 파이썬 기반의 개방형 데이터 과학에 특화된 플랫폼입니다.
  • Jython : 파이썬으로 자바를 구현한 플랫폼입니다.
  • pypy : 파이썬은 C로 짜였습니다. pypy는 파이썬으로 파이썬을 만들었습니다.

321
사용해볼 일이 있을까? 라는 생각이 들겠지만 특정 상황에 적합한 파이썬 배포판들이 존재합니다. 제 말이 맞는지 한번 확인해볼게요. (명렁어는 아래에서 소개됩니다.)

pyenv 또 다른 장점은 버전별로도 설치할 수 있다는 장점이 있습니다.  명령어 하나만으로 파이썬 2.7버전도 설치할 수 있고, 파이썬 3.6.1 버전을 설치할 수도 있습니다. 

꼭 설치해야 하나요?

만약, 하나의 프로젝트만 만들거야! 라고 하면 상관없습니다. 하지만 나중에는 여러 개의 Django 프로젝트를 관리해야할지도 모르고, 언젠가는 데이터 과학을 다루어야 할지도 모릅니다. 거기서도 여러 프로젝트를 관리해야 할 필요성이 있게 되겠죠. 

설치하기

Mac OS X

# homebrew를 우선 설치해서 pyenv의 설치를 돕도록 한다.

 $ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)# homebrew로 pyenv와 pyenv-virtualenv 설치
 $ brew install pyenv
 $ brew install pyenv-virtualenv

Linux

$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

스크린샷, 2017-09-19 19-00-53
설치가 되었다면 pyenv --version 를 통해서 확인해보세요.

pyenv 관련 설정하기

설치에 성공했다면, 아래 명령어를 입력해주세요.

  • 맥 : vim ~/.zshrc
  • 리눅스 : vim ~/.zshrc

저는 zsh을 사용하고 있기 때문에 zshrc에 설정하겠습니다.
만약, bash 사용자라면 ~/.bashrc로 해주세요. 쉘 사용법에 대해서는 설명하지 않겠습니다.

export
vim을 통해 열었으면 shift+g를 눌러서 맨 하단에 아래 내용을 삽입합니다.

Mac OS X

export PYENV_ROOT=/usr/local/var/pyenv
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi

Linux

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

shell에 위 내용을 입력했면, 터미널을 재시작하거나, vim ~/.zshrc 명령어를 통해서 설정을 적용해주세요. 맥(mac)의 경우에는 로그아웃해야지 설정이 적용되는 경우도 있습니다.

기본 명령어

# 설치할 수 있는 파이썬 버전들
$ pyenv install --list

# 특정 버전 설치
$ pyenv install <version name>

# 특정 버전 삭제
$ pyenv uninstall <version name>

# 설치된 파이썬 버전들
$ pyenv versions

위 네 가지 명령어는 자주 이용됩니다.

실전 예제

위에서 배운 명령어로 python 3.6.2 버전을 설치해볼게요

$ pyenv install 3.6.2

만약 아나콘다(데이터 과학에 적합한 파이썬 배포판)를 설치하고 싶다면

$ pyenv anaconda3-<버전명>

처럼 해주시면 되겠습니다. python 3.6.2을 설치하는데 한 3~4분 정도가 소요될겁니다. 정말로 설치된게 맞는지 확인해볼게요.
pyenv versions
pyenv versions 명령어를 입력하면 * 로 표시된 부분이 있을겁니다. 이 부분이 현재 사용하고 있는 python 버전이라는 뜻입니다. 스크린샷에는 총 4줄이 뜨는 것을 확인할 수 있습니다. 가장 위에 줄부터 살펴볼게요

(1) system (set by /usr/local/var/pyenv/version)

현재 로컬환경이 전역적으로 사용하고 있는 파이썬 버전을 의미합니다.
만약, dot 폴더에 들어가서 가상환경까지 지정해줬다면 dot 앞에 *가 표시됩니다.

(2) 3.6.2
pyenv install 3.6.2 를 했을 때 설치된 파이썬을 의미합니다.

(3) 3.6.2/envs/dot
파이썬 3.6.2를 이용해 만든 가상환경의 경로를 의미합니다.

(4) dot
단순히 가상환경 프로젝트 이름만을 한번 더 출력해줍니다.

기타 명령어

pyenv --versionpyenv versions는 서로 다른 명령어입니다.

# Python 버전 확인
python --version 혹은 python -V
참고로 Unix 사용자는 기본적으로 파이썬이 설치되어 있습니다.

# pyenv 라이브러리의 버전 확인
$ pyenv --version
pyenv 1.1.3

# pyenv를 이용해 만든 파이썬 버전들을 출력
$ pyenv versions

* system (set by /usr/local/var/pyenv/version)
  3.6.2
  3.6.2/envs/dot
  dot

한 가지 팁을 드리자면 python --version가 2.7.X 버전대를 출력한다면 pyenv global <자신이 설치한 파이썬 버전> 입력을 통해서 최신버전의 파이썬을 전역적으로 사용하세요.

가상환경

위에서는 파이썬 3.6.2를 깔았지만, 여기서는 파이썬 3.6.1로 진행했다고 가정합니다.

pyenv와 virtualenv는 바늘과 실같은 존재입니다. pyenv로 파이썬을 버전별로 설치할 수 있는 라이브러리라면 virtualenv는 파이썬 패키지 환경을 관리합니다.

  • 파이썬 패키지는 도서관의 책에 해당한다고 보시면 되겠습니다. 우리가 다루는 Django도 파이썬 패키지입니다. 크롤링을 해보신 분이라면 beautifulsoup을 들어보셨을텐데요. 이것도 파이썬 패키지입니다.

기억이 잘 나지 않으시겠지만, vim을 이용해 ~.zshrc 부분을 건드려줬던 적이 있습니다. 이 명령어를 쉘에 적용해서 가상환경을 손쉽게 생성할 수 있습니다.

가상환경 생성하기

$ pyenv virtualenv <version> <가상환경 이름>
예시) pyenv virutalenv 3.6.1 dot

파이썬 환경을 3.6.1로 하고, dot이라는 가상환경을 생성했다는 뜻입니다. 어떤 파이썬 버전을 설치했는지 잘 모르겠다구요?
pyenv 그러면 다시한번 pyenv versions 명령어를 통해 살펴보세요. 저는 파이썬 3.6.1을 설치했고, 이미 dot이라는 가상환경이 있다는 걸 볼 수 있네요.

가상환경 삭제하기

$ pyenv uninstall <가상환경 이름>

가상환경을 잘못만들었다면, 지워줄 수도 있습니다.

가상환경 지정하기

가상환경을 생성 했으면 특정 디렉토리를 가상환경으로 지정할 수 있습니다!

$ pyenv local (가상환경이름)) pyenv local dot

주의할점은 가상환경으로 지정 할!! 디렉토리 안에서 위 명령어를 입력해야 합니다.
dot
갑자기 없던 (dot) 이라는 괄호가 생겼네요. 이렇게 되면 가상환경 지정에 성공한 겁니다.

가상환경 해제하기

$ pyenv deactivate

가상환경을 지정 했으면 해제하는 것도 있어야겠지요.
(저는 어떤 이유에서인지는 모르겠지만 해제가 되질 않네요.)

패키지 확인하기

pip list1
pip list를 입력해볼게요. pip는 Python Installs Package의 줄임말입니다. 빨간색으로 출력되는 글자는 무시하세요.

위에서 패키지(package)는 도서관의 책에 해당한다고 설명했죠. 저는 이전에 Django를 설치했기 때문에 Django라는 책을 볼 수 있습니다.

pip list2

그러면 새로운 가상환경을 만들어봐서 실험해볼게요.
이번에는 Django가 뜨지 않고, 순정의 pip list가 나타납니다.

pyenv virtualenv를 이용해 가상환경을 처음 만들었다면 pip와 setuptools는 자동으로 내장된다는 뜻이겠죠.

마무리

여기까지 해서 모든 튜토리얼은 끝이 났습니다. 길고, 복잡하고, 어렵습니다. 새로운 디렉토리를 만들어서 자주 반복 숙달해보시는 것을 추천합니다.