2013년 7월 29일 월요일

[Python] virtualenv로 python을 위한 sandbox 만들기


sandbox라고 표현하는게 맞는지는 모르겠지만 느낌은 sandbox다.


파이썬 모듈을 설치할 때 대부분의 사람들은 pip와 easy_install 과 같은 프로그램을 사용해

간편하게 설치하지만 동일 이름의 다른 모듈이 존재할 때 모듈이 꼬이는 귀찮은 상황이 발생할 수 있다.


virtualenv를 사용하면 현재 시스템에 설치된 python 모듈을 사용하지 않고고 독립적인 공간에서

virtualenv 설정이 된 폴더에 따로 python 모듈이 설치되도록 한다.


예를 들면

carpedm20@HeXA:~/python/flaskr$ tree -d venv -L 3
venv
├── bin
├── include
│   └── python2.7 -> /usr/include/python2.7
├── lib
│   └── python2.7
│       ├── config -> /usr/lib/python2.7/config
│       ├── distutils
│       ├── encodings -> /usr/lib/python2.7/encodings
│       ├── lib-dynload -> /usr/lib/python2.7/lib-dynload
│       └── site-packages
└── local
    ├── bin -> /home/carpedm20/Python/flaskr/venv/bin
    ├── include -> /home/carpedm20/Python/flaskr/venv/include
    └── lib -> /home/carpedm20/Python/flaskr/venv/lib


다음과 같이 flaskr 라는 폴더 안에 venv 폴더가 virtual 환경으로 설정이 되고,

그 안에 bin, lib, local 과 같은 시스템 폴더들이 생겨 라이브러리와 파이썬 바이너리가 저장이 된다.


설치법과 사용법은 아래와 같다


$ sudo apt-get install python-setuptools
$ sudo easy_install virtualenv

$ virtualenv --no-site-packages venv # --no-site-packages:현재 시스템의 site-package와 저의 지역 환경을 연결하지 않도록

$ echo "venv" >> .gitignore # git 사용시 virtual 환경이 push되는것을 막음

$ . venv/bin/activate # virtual 환경을 시작한다

$ pip install flask # 보통 다음과 같이 모듈을 설치하지만
$ pip install -r requirements.txt # 설치할 모듈 리스트가 있는 requirements.txt 파일이 있다면 다음과 같이 설치할 수 도 있다

$ pip freeze > requirements.txt # 현재 virtual 환경에 설치된 모듈들의 리스트를 requirements.txt에 저장

$ . venv/bin/deactivate # virtual 환경을 종료한다

댓글 없음:

댓글 쓰기