Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python venv 모듈로 가상 환경 생성하고 활용하는 방법

Python 기반 애플리케이션을 개발하다 보면 특정 버전의 패키지가 필요한 경우가 많습니다. 그런데 이 패키지를 시스템 전역에 설치하면 다른 애플리케이션의 요구 사항과 충돌이 발생할 수 있습니다. 이러한 호환성 문제를 해결하려면 용도별로 독립된 환경을 나란히 운영하는 것이 좋습니다.

가상 환경(Virtual Environment)은 Python 패키지를 시스템 전역이 아닌 격리된 위치에 설치할 수 있게 해주는 기능입니다. 이를 통해 프로젝트마다 서로 다른 패키지 버전을 자유롭게 사용할 수 있습니다.

venv 모듈로 가상 환경 만들기

Python 표준 라이브러리에 포함된 venv 모듈을 사용하면 별도 설치 없이 가상 환경을 생성할 수 있습니다. 가상 환경은 파일 시스템상의 하나의 디렉터리로, 자체적인 Python 인터프리터와 각종 스크립트 사본을 포함합니다. 다음 명령으로 지정한 디렉터리에 가상 환경을 만들 수 있습니다.

C:\python37>python -m venv e:\testenv

명령을 실행하면 지정한 경로에 새 디렉터리가 생성됩니다. 필요에 따라 아래 옵션들을 함께 사용할 수도 있습니다.

--system-site-packages시스템 site-packages 디렉터리에 접근할 수 있도록 허용합니다.
--symlinks복사 대신 심볼릭 링크(symbolic link)를 사용하려고 시도합니다.
--copies심볼릭 링크 대신 복사본을 사용하려고 시도합니다.
--clear환경 디렉터리가 이미 존재하면 내용을 삭제합니다.
--upgrade기존 환경 디렉터리를 현재 Python 버전에 맞게 업그레이드합니다.
--without-pip가상 환경에 pip를 설치하거나 업그레이드하지 않고 건너뜁니다(기본적으로 pip는 자동 설치됨).

스크립트 폴더 구조

생성된 환경 디렉터리(여기서는 testenv)의 scripts 폴더에는 Python 인터프리터 사본, pip 설치 도구, 그리고 환경을 활성화·비활성화하는 스크립트들이 들어 있습니다.

activate
activate.bat
activate.ps1
deactivate.bat
easy_install-3.7.exe
easy_install.exe
pip.exe
pip3.7.exe
pip3.exe
python.exe
pythonw.exe

가상 환경 활성화하기

격리된 환경에서 Python을 실행하려면 먼저 가상 환경을 활성화해야 합니다. Windows에서는 명령줄에서 activate.bat 스크립트를 호출하면 됩니다.

E:\testenv>scripts\activate

(testenv) E:\testenv>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

활성화되면 프롬프트 왼쪽에 괄호 안에 가상 환경 이름(testenv)이 표시됩니다. 이제 이 상태에서 실행되는 Python은 가상 환경에 속하게 됩니다.

이 상태에서 pip3 등의 유틸리티로 패키지를 설치하면 해당 패키지는 가상 환경 내부에만 설치되며, 시스템 전역 환경에는 영향을 주지 않습니다.

가상 환경 비활성화하기

일반 환경으로 돌아가려면 scripts 폴더의 deactivate.bat 스크립트를 실행하여 가상 환경을 비활성화하면 됩니다.

>>> quit()

(testenv) E:\testenv>scripts\deactivate
E:\testenv>

참고 사항

Python 3.3 미만 버전에서는 venv 모듈이 제공되지 않으므로, 별도로 설치해야 하는 virtualenv 패키지를 사용해야 합니다.

또한 venv 모듈은 EnvironmentBuilder 클래스를 제공하여 코드로 가상 환경을 프로그래밍 방식으로 생성할 수도 있습니다.