Python - Install virtualenv on Linux
Python 개발환경을 위해서 시스템에 설치된 python2.7, python3.x 에서 사용하는 패키지 모듈을 pip를 사용해서 패키지를 관리할 수 있다. 그리고 시스템 모듈과 별도의 버전 환경으로 버전 관리 도구인 virtualenv와 virtualenvwrapper 를 사용해 파이썬 가상 개발 환경을 구성하는 방법을 설명한다.
Python virtualenv 개발환경 구축하기
최근 리눅스 배포본은 python2.7, python3.x 버전이 내장되어 있다.
- raspbian-wheezy에는 Python 2.7과 Python 3.2가 설치되어 있다
 - raspbian jessie에는 Python 2.7과 Python 3.3이 설치되어 있다.
 - armbian Debian Jessie, Ubuntu Xenial 에도 Python 2.7과 Python3.3 이 설치되어 있다.
 
파이썬 개발환경은 virtualenv 를 기반으로 사용하는 것을 권장한다. 그리고 가상 개발 환경은,
- 시스템 개발자 모듈 설치
 - 시스템 Python pip 설치
 - pip에서 시스템 Python virtualenv, virtualenvwrapper 설치
 - 가상환경 만들기
 
순서로 구성할 수 있다.
Python 가상 개발 환경 설치
다양한 파이썬 버전을 위해 환경 구성을 해주는 유틸리티.
pyenv : “Simple Python Version Management”, 로컬에 다양한 파이썬 버전을 설치하고 사용할 수 있도록 한다. pyenv를 사용함으로써 파이썬 버전에 대한 의존성을 해결할 수 있다.
virtualenv : “Virtual Python Environment builder”, 로컬에 다양한 파이썬 환경을 구축하고 사용할 수 있도록 한다. 일반적으로 Python Packages라고 부르는 ( pip install을 통해서 설치하는 ) 패키지들에 대한 의존성을 해결할 수 있다.
autoenv : 만약 pyenv와 virtualenv를 통해서 의존성을 해결한다고 하더라도 작업할때마다 설정해주는 것은 귀찮은 작업이다. 특정 프로젝트 폴더로 들어가면 자동으로 개발 환경을 설정해주는 autoenv라는 스크립트를 활용할 수 있다.
pyenv
http://pythonstudy.xyz/python/article/506-파이썬-가상환경
여기서는 virtualenv와 virtualenvwrapper를 사용해서 모듈을 설치하고 관리한다. pip 모듈을 사용해서 virtualenv 와 virtualenvwrapper 를 설치한다.
virtualenv 단독 사용
다음 참조. http://dgkim5360.tistory.com/entry/python-virtualenv-on-linux-ubuntu-and-windows
virtualenv는 가상환경이 설치된 위치로 이동해서, 설치한 폴더에서 source 명령을 통해 환경을 활성화해야 한다. 이런 점을 보완해 쉘 명령을 제공하는 virtualenvwrapper와 함께 쓰는 것을 권한다.
여기서는 pip로 virtualenv와 virtualenvwrapper를 설치해서 사용한다.
virtualenv와 virtualenvwrapper
virtualenv는 가상의 파이썬 작업환경을 만들어 준다. 작업환경을 따로따로 만들어, 시스템 파이썬 모듈이나 다른 가상의 작업환경에게 영향을 주지 않는다. 또한 pip는 시스템의 site-packages 폴더 /usr/lib/python2.7/site-packages에 모듈을 설치하는데 virtualenv를 이용하면 분리할 수 있다.
이제 pip로 virtualenv와 virtualenvwrapper를 설치한다.
1  | $ pip3 install virtualenv  | 
virtualenvwrapper는 virtualenv 통합 환경을 쉽게 다룰 수 있게 해준다. 쉘 프로파일 .bashrc, .profile 등에 다음 라인을 추가한다.
1  | export WORKON_HOME=$HOME/.virtualenvs  | 
그리고 쉘 환경을 로딩하기 위해서 다시 로그인 하거나 다음 같이 source 명령을 이용해도 좋다.
1  | $ source .profile  | 
다음 에러가 발생하면 쉘에 VIRTUALENVWRAPPER_PYTHON 를 추가해 준다.
/usr/bin/python: No module named virtualenvwrapper
virtualenvwrapper.sh: There was a problem running the initialization hooks.If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is
Quick-Start
새로운 가상환경은 mkvirtualenv 명령으로 만든다. 가상환경으로 전환시 프롬프트가 (NAME) $ 형태로 표시된다.
1  | $ mkvirtualenv django2 #기본 python 버전의 환경 생성  | 
mkvirtualenv 명령은 -p 옵션으로 파이썬 버전을 명시할 수 있다.
1  | $ mkvirtualenv -p python3 django3  | 
--system-site-packages 옵션은 site-package 시스템 버전을 사용하게 한다.
1  | $ mkvirtualenv --system-site-packages -p python3 django3  | 
workon 명령으로 설치한 가상 환경 목록을 보거나 혹은 해당 가상환경으로 전환할 수 있다.
1  | $ workon  | 
프로젝트 환경을 빠져 나오려면 deactivate를 실행한다.
1  | (django3):~$ deactivate  | 
가상환경 복사하기
1  | $ cpvirtualenv django3 new_djang4  | 
pyvenv
3.3에서부터 pyvenv에 기본으로 설치되어 있다. 다만 3.3에서는 pip를 가상 환경을 만들 때마다 설치해주어야 한다. 3.4에서는 pip까지 기본으로 설치되어 있다.
1  | $ mkdir django_tests  | 
System service
Virtualevn 환경을 시스템 시작 스크립, 크론, 파이썬 스크립에서 사용하려면 해당 가상 환경 위치의 python 혹은 가상환경의 jupyter-notebook 같은 명령 위치를 지정하면 된다.
https://serverfault.com/questions/821575/systemd-run-a-python-script-at-startup-virtualenv
참조
Python - Install virtualenv on Linux
https://thinkbee.github.io/2017-04-03-virtualenv-linux-8431e8cf44ac/