Virtualenv 및 Venv : Python 가상 환경 설명

Python이 개발자들에게 인기가있는 모든 이유 중 가장 큰 이유 중 하나는 광범위하고 지속적으로 확장되는 타사 패키지 선택입니다. 섭취 고속 수학 및 기계 학습 데이터 포맷에서 모두를위한 편리한 툴킷은 단지이다 import또는 pip install멀리.

그러나 이러한 패키지가 서로 잘 작동하지 않으면 어떻게 될까요? 서로 다른 Python 프로젝트가 동일한 추가 기능의 경쟁 버전이나 호환되지 않는 버전이 필요한 경우 어떻게합니까? 이것이 바로 Python 가상 환경이 작동하는 곳입니다.

도구는 다르지만 Python 2와 Python 3 모두에서 가상 환경을 만들고 작업 할 수 있습니다. Virtualenv는 Python 2에서 선택한 도구이며 venv는 Python 3에서 작업을 처리합니다. 

Python 가상 환경이란 무엇입니까?

가상 환경은 각각 다른 패키지 세트와 다른 구성을 가진 Python 인터프리터의 여러 병렬 인스턴스를 갖는 방법입니다. 각 가상 환경에는 지원 유틸리티 사본을 포함하여 Python 인터프리터의 개별 사본이 포함되어 있습니다.

각 가상 환경에 설치된 패키지는 해당 가상 환경에서만 볼 수 있으며 다른 것은 볼 수 없습니다. 플랫폼 종속 바이너리가 포함 된 크고 복잡한 패키지도 가상 환경에서 서로 분리 될 수 있습니다.

가상 환경에 대한 몇 가지 일반적인 사용 사례가 있습니다.

  1. 동일한 패키지의 서로 다른 버전에 의존하는 여러 프로젝트를 개발 중이거나 네임 스페이스 충돌로 인해 특정 패키지에서 격리되어야하는 프로젝트가 있습니다. 이것이 가장 일반적인 사용 사례입니다.
  2. site-packages 디렉토리를 수정할 수없는 Python 환경에서 작업하고 있습니다. 이는 관리 호스팅과 같이 고도로 통제 된 환경에서 작업하거나 프로덕션 요구 사항으로 인해 인터프리터 (또는 여기에서 사용되는 패키지)의 선택을 변경할 수없는 서버에서 작업하고 있기 때문일 수 있습니다.
  3. 예를 들어 상호 호환성 또는 이전 버전과의 호환성을 테스트하기 위해 고도로 통제 된 환경에서 특정 패키지 조합을 실험하려고합니다.
  4. 타사 패키지가없는 시스템에서 Python 인터프리터의 "기준"버전을 실행하고 필요에 따라 각 개별 프로젝트에 대한 타사 패키지 만 설치하려고합니다.

프로젝트의 하위 폴더에 Python 라이브러리를 압축 해제하여 그런 방식으로 사용할 수는 없습니다. 마찬가지로, Python 인터프리터의 독립 실행 형 사본을 다운로드하고 폴더에 압축을 풀고이를 사용하여 전용 스크립트와 패키지를 실행할 수 있습니다.

그러나 이러한 공동 프로젝트를 관리하는 것은 곧 어려워집니다. 처음에는 그렇게하는 것이 더 쉬워 보입니다 . 바이너리 구성 요소가 있거나 정교한 타사 종속성에 의존하는 패키지로 작업하는 것은 악몽 일 수 있습니다. 가장 장기적인 솔루션은 가상 환경을 만들고 작업하는 데 Python의 기본 메커니즘을 사용하는 것입니다.

Python 3의 가상 환경

Virtualenv는 수많은 Python 개발자에게 없어서는 안될 것으로 입증되었지만 Python의 표준 라이브러리의 일부는 아닙니다. Python 3에는 전체 프로세스를 매우 간단하게 만드는 가상 환경 용 기본 도구가 있습니다.

관련 비디오 : Python이 프로그래밍을 더 쉽게 만드는 방법

IT에 완벽한 Python은 시스템 자동화에서 기계 학습과 같은 최첨단 분야에서의 작업에 이르기까지 다양한 종류의 작업을 단순화합니다.

가상 환경 만들기

주어진 디렉토리에 가상 환경을 만들려면 다음을 입력하십시오.

python3 -m venv /path/to/directory

( 시스템 이 기본 Python 3 인터프리터로 인식 python하는 python3경우 대신 사용할 수 있습니다  python.)

가상 환경을 설정하는 전체 프로세스는 1 ~ 2 분 정도 걸릴 수 있습니다. 완료되면 몇 개의 하위 디렉토리가있는 디렉토리가 있어야합니다. 가장 중요한 하위 디렉토리는  binUnix 또는  ScriptsWindows에 있으며, 여기에서 유틸리티와 함께 ​​가상 환경을위한 Python 인터프리터 사본을 찾을 수 있습니다.

각 가상 환경에는 자체 Python 인터프리터 사본이 포함되어 있으므로 상당히 클 수 있습니다. Windows와 Linux 모두에서 Python 3.6 가상 환경은 약 23MB의 디스크 공간을 사용합니다.

가상 환경 활성화

이 가상 환경을 사용하려면 먼저 명시 적으로 활성화 해야합니다. 활성화하면 가상 환경이 세션 기간 동안 기본 Python 인터프리터가됩니다.

사용중인 운영 체제 및 명령 셸에 따라 가상 환경을 활성화하기 위해 다른 구문을 사용해야합니다.

  • Unix 또는 MacOS에서 bash 셸 사용 : source /path/to/venv/bin/activate
  • Unix 또는 MacOS에서 csh 셸 사용 : source /path/to/venv/bin/activate.csh
  • Unix 또는 MacOS에서 피쉬 쉘 사용 : source /path/to/venv/bin/activate.fish
  • Windows에서 명령 프롬프트를 사용하는 경우 :path\to\venv\Scripts\activate.bat
  • PowerShell을 사용하는 Windows : path\to\venv\Scripts\Activate.ps1

활성화 된 환경 은에서 활성화 된 컨텍스트에 대해서만 작동합니다 . 예를 들어 두 개의 PowerShell 인스턴스 A와 B를 시작하고 인스턴스 A에서만 가상 환경을 활성화하면 해당 환경은 A에만 적용됩니다. 다른 곳에는 적용되지 않습니다.

가상 환경 구성 및 사용

새 가상 환경을 활성화하면 pip 패키지 관리자를 사용하여 패키지를 추가하고 변경할 수 있습니다. ScriptsWindows의 가상 환경 bin하위 디렉토리와 Unix OS 의 하위 디렉토리에서 pip를 찾을 수 있습니다.

pip가 작동하는 방식에 이미 익숙하다면 설정이 완료된 것입니다. 가상 환경에서도 동일해야합니다. 활성화 된 컨텍스트 (예 : bash 세션 또는 Windows CLI / PowerShell 세션)에서 가상 환경에 대한 패키지를 관리하는 pip 인스턴스를 사용하고 있는지 확인하십시오. 올바른 pip와 올바른 가상 환경을 사용 pip -V하고 있는지 확인하려면 표시되는 경로가 가상 환경의 하위 디렉터리를 가리키는 지 입력 하고 확인합니다.

생성 한 가상 환경을 사용하여 Python 스크립트를 실행하려면 활성화 한 컨텍스트의 명령 줄에서 Python을 호출하면됩니다.

가상 환경 비활성화

가상 환경 사용이 끝나면 사용하던 세션을 종료하면됩니다. 환경에서 계속 작업하지만 대신 기본 Python 인터프리터를 사용 deactivate하려면 프롬프트에 입력 하십시오. 명령 프롬프트의 Windows 사용자 deactivate.batScripts하위 디렉터리 에서 실행해야 하지만 PowerShell을 실행하는 Unix 사용자 및 Windows 사용자 deactivate는 아무 디렉터리 에나 입력하기 만하면 됩니다.

가상 환경 제거

가상 환경은 독립적입니다. 더 이상 가상 환경이 필요하지 않으면 해당 디렉토리를 삭제하면됩니다.

Python 2의 가상 환경

Python 2에서 가상 환경은 언어의 기본 기능이 아닙니다. 대신 가상 환경을 만들고 관리하려면 타사 라이브러리를 설치해야합니다.

이러한 프로젝트 중 가장 널리 사용되고 널리 사용되는 것은 virtualenv로, 디렉토리 구조를 만들고 필요한 파일을 가상 환경에 복사하는 작업을 처리합니다. virtualenv를 설치하려면 pip install virtualenv. 가상 환경 디렉터리를 만들려면을 입력 virtualenv /path/to/directory합니다. 가상 환경 활성화 및 비활성화는 Python 3의 가상 환경에서와 동일한 방식으로 작동합니다 (위 참조).

Jupyter 노트북에서 가상 환경 사용

Jupyter 노트북 (일명 IPython 노트북)을 사용 중이고 이미 시스템 전체에 Jupyter가 설치되어있는 경우 가상 환경을 만들고 활성화합니다. 그런 다음 가상 환경 디렉터리에서 실행 pip install ipykernel하여 IPython에 필요한 구성 요소를 추가합니다. 마지막으로를 실행합니다 ipython kernel install —user —name=. 여기서 project_name은 해당 특정 프로젝트와 연결할 이름입니다. 거기에서 Jupyter를 시작하고 가상 환경 내에 설치 한 IPython 커널로 전환 할 수 있습니다.