python 관련한 모듈 설치 시에 easy_install이나 pip를 사용하는데, 아무 설정없이 그냥 설치하면, nodejs나 maven같이 각 프로젝트에 해당 하는 모듈을 설치하는 것이 아니라, 시스템에 global하게 설치가 되버려서, 잘 됬던 기능도 호환성 이슈에 따라 문제가 생기는 경우가 발생하게 된다.
위와 같은 문제가 발생하는 것을 막기 위해, virtualenv 라는 모듈을 설치하여, 시스템에 global하게 설치되는 방식이 아닌, 해당 프로젝트에서만 종속되는 모듈을 설치할 수 있도록 가상 개발환경 구축이 가능하다.
[설치]
일단 아래와 같은 키워드로 virtualenv를 설치해보자. (사전에 pip가 설치되어 있어야 함.)
$ pip install virtualenv
가상 환경을 구축할 폴더를 하나 만들고, virtualenv를 이용하여 가상 환경을 구축해보자.
$ mkdir virtualenv_test
$ virtualenv venv
virtualenv 명령어 실행 시 첫번째 argument는 만들어질 가상환경의 이름(alias)이다. 보통 venv, .venv 등으로 만들며 이름만 다르다면 여러개도 만들 수 있다.
가상 환경 구축이 완료되면, 해당 디렉토리에 venv (alias) 디렉토리가 생기며, 가상 환경 컨트롤을 위한 몇 가지 폴더와 스크립트가 생긴다.
이제 기본 세팅은 끝났고, 가상 환경 활성화 / 비활성화에 대해 알아보겠다.
[활성화 / 비활성화]
만들어진 폴더들을 보면, Windows 환경인 경우에 Scripts 폴더가 있고, Linux 환경의 경우 bin 폴더가 있을 것이다.
* Windows
$ ls venv/
Include/ Lib/ pip-selfcheck.json Scripts/ tcl/
* Linux
$ ls venv/ bin lib local
활성화는 아래와 같은 키워드로 한다.
* Windows
$ . venv/Scripts/activate
* Linux
$ . venv/bin/activate
활성화가 완료되면, git에서 브랜치를 변경했을 때처럼 쉘 앞에 (venv) 라는 문자열이 생기며, 앞으로 pip를 통해 설치하는 모듈은 해당 가상환경에만 종속되게 설치가 된다.
주의할 점은, 비활성화를 시키지 않은 채 다른 프로젝트로 이동해 작업을 하다가 필요한 모듈을 설치하면, 활성화 당시의 가상환경에 설치가 되기 때문에 혼선이 있을 수 있어, 하나의 프로젝트에서 필요한 작업을 완료하고 나면, 비활성화를 꼭 시켜주도록 한다.
비활성화는 아무 디렉토리에서나 아래 명령어를 통해 가능하다.
(venv)$ deactivate
이렇게 가상환경 구축을 이용해서 작업을 하다가, 최종적으로 원격 서버에 배포를 진행하기 위해서는 가상환경에서 설치했던 모듈들을 파일로 만들어줄 필요가 있다.
그럴땐 아래와 같은 키워드로 설치된 패키지 목록을 파일로 만들어준다.
(venv)$ pip freeze > requirements.txt
이렇게 해두면, 원격 서버에서 소스를 올린 후에 아래와 같은 커맨드로 한 번에 모듈을 설치할 수 있게 된다.
$ pip install -r requirements.txt
'개발 > Python' 카테고리의 다른 글
[pywin32] Python을 이용한 비활성 Window에 Key 이벤트 보내기 (0) | 2022.07.31 |
---|---|
[Python 2.x] UTF-8 인코딩 관련 (0) | 2017.08.09 |
[Python] Python 3.x no module MysqlDB (0) | 2017.02.14 |
[PyQt5] GUI 개발을 위한 PyQt5 세팅 (0) | 2017.02.14 |
[Python] pyYaml을 이용한 yaml parsing (0) | 2017.02.10 |