프로그래밍/python3.x-library

파이썬3 개별 프로젝트를 위한 가상환경 설정(윈도우)

콘파냐 2017. 3. 28. 23:30
반응형

파이썬을 설치한 후 다양한 패키지들을 설치해봤을 것이다. 주로 pip으로 설치하는데 파이썬은 개발주기도 빠르고 패키지도 패키지 버전에 따라서 호환이 안되거나 하기 때문에 패키지 버전을 신경써줘야 한다. 예를 들어 여러개의 프로젝트를 하다가 어떤 프로젝트에서 특정 패키지의 최신 버전이 필요하다고 해서 함부로 업데이트를 한다면 해당 패키지를 사용하는 다른 프로젝트가 먹통이 될 수도 있을 것이다. 이 밖에도 다양한 이유로 파이썬에서는 가상환경이 유용하기 쓰인다. 


파이썬 3.3부터인가? 그 전까지는 virtualenv를 설치해서 독립된 개발환경을 설정할 수 있다. 3.3이후로는 venv라는 표준라이브러리가 이 역할을 대신한다. 우선 간단히 사용방법을 정리해보자.


가상환경 만들기


명령 프롬프트에서 다음 명령을 입력(마지막 전달인자는 가상환경을 만들 폴더)

C:\> python -m venv C:\Myenv

이렇게 하면 C:\Myenv에 include폴더, lib폴더 Script 폴더가 생긴다. 이 환경은 파이썬을 가장 처음 설치 했을 때의 환경과 같다고 가정하면 된다. 기본적인 include, Lib, Script는 원래 파이썬이 설치되어 있는 곳을 참조하지만 Myenv을 개발환경으로 활성화 시킨 후에 패키지들을 설치하면 이 곳에만 설치되고 기본 파이썬 환경에는 영향을 미치지 않는다. 마찬가지로 기본 파이썬 환경에서 설치된 패키지는 Myenv환경에는 영향을 미치지 않는다. 


가상환경 사용법


그러면 새로 생성된 Myevn를 어떻게 이용하나?

C:\>C:\Myenv\Scripts\activate.bat

(Myenv) C:\>

가상환경이 만들어지면 Script폴더에 있는 activate.bat파일을 실행하여 해당 가상환경을 이용할 수 있다. 가상환경이 활성화 됐다는 표시로 명령 프롬프트 앞에 해당 가상환경 이름(Myenv)이 표시된다. 이 상태에서 실행되는 모든 파이썬 스크립트는 가상환경에 설치된 패키지를 참조한다.

반대로 다음과 같이 하면 비활성화가 된다.

(Myenv) C:\>C:\Myenv\Scripts\deactivate.bat

C:\>


패키지 설정


가상환경을 활성화 시킨 후 pip을 사용하여 가상환경 내에 패키지를 설치 제거할 수 있다. 이렇게 설치된 패키지는 해당 가상환경이 활성화 됐을 때만 유효하다.

가상환경에서의 개발환경에 대한 설정을 저장하고 싶을 수가 있다. 예를들어 포맷을 하거나 컴퓨터를 옮기거나 할 경우에 그렇다. 이럴 경우 프로젝트 별로 개발환경을 다시 세팅하기 번거롭다. 우선 다음과 같이 현재 파이썬 기본환경에서 어떤 패키지가 설치되었는지 출력해보자.

위 그림은 기본환경에 추가로 설치된 패키지들이다.


앞에서 생성한 가상환경을 활성화 한 뒤에 명령어(pip freeze)를 실행해보면 비어있다.(당연히 아무것도 설치 안했으므로 상태이므로)

그럼 가상환경에 pymysql을 설치해 보겠다.

그리고 이 환경에서 저장된 패키지의 목록을 저장해 놓을 것이다.(C:\python35\Myenv.env로 저장함)

이제 새로운 가상환경을 다시 만들어 보자.

C:\>python -m venv C:\SecondEnv

이제 해당 가상환경에 Myenv와 같은 환경으로 만들어 보자.

pip install -r Myenv.env로 아까 저장한 환경이 그대로 복원되었음을 알 수 있다.


개발 버전에 따른 환경설정


이미 파이썬 론쳐에 대해서 설명했었다. 론쳐를 이용해서 파이썬 버전을 선택할 수 있는데 만약 파이썬 2.x 버전을 사용하려면 론쳐를 사용해서 파이썬 virturalevn를 설치해서 사용해야 한다.

C:\>py -2 -m pip install virtualenv

만약 파이썬 2.x 버전의 환경을 가상으로 꾸며서 개발하고 싶다면 virtualenv를 사용해야 한다. 물론 인터프리터를 위와 같이 파이론쳐(py -2)를 사용해서 정확히 지정해야 한다. 그리고 virtualenv의 활성 명령은 가상환경 폴더/bin/activate다. 참고하자.

반응형