최근에 워크 플로에서 virtualenv 및 virtualenvwrapper를 사용하는 방법을 배웠지 만 몇 가지 가이드에서 pyenv를 언급했지만 pyenv가 무엇인지, pyenv가 무엇이고 어떻게 그것이 virtualenv와 다른지 또는 유사한 지 이해하지 못하는 것 같습니다. pyenv가 virtualenv 또는 무료 도구를위한 더 나은 / 새로운 대체품입니까? 후자의 경우 어떻게 다르게 작동하며 두 가지 (및 해당되는 경우 virtualenvwrapper)가 어떻게 함께 작동합니까?
답변
Pyenv 와 virtualenv 는 다른 방식으로 작동하여 다른 작업을 수행하는 매우 다른 도구입니다.
-
Pyenv 는 bash 확장 프로그램입니다-Windows에서는 작동하지 않습니다-파이썬, 핍 등에 대한 호출을 차단하여 여러 시스템 파이썬 도구 체인 중 하나에 연결합니다. 따라서 선택한 Python 버전으로 설치 한 모든 라이브러리를 항상 사용할 수 있습니다. 따라서 다른 버전의 Python간에 전환해야하는 사용자에게 좋습니다.
-
VirtualEnv 는 순수한 파이썬이므로 어디에서나 작동하며, 현재 시스템 툴 체인에 대한 링크를 포함하거나 포함하지 않을 수있는 활성화 환경에 로컬로 선택적으로 특정 버전의 파이썬 및 pip 사본을 만듭니다. 라이브러리의 알려진 서브 세트 만 해당 환경에 설치하십시오. 따라서 어떤 라이브러리가 어떤 버전에서 사용되는지와 전체 변경 사항이 모듈에 영향을 미치지 않음을 정확히 알기 때문에 테스트 및 배포에 훨씬 더 좋습니다 .
venv python> 3.3
Python 3.3부터는 venv라는 VirtualEnv 구현이 내장되어 있습니다 (일부 설치에서는 pyvenv라는 래퍼가 있습니다-이 래퍼는 Python 3.6에서 더 이상 사용되지 않습니다 ). 래퍼의 가능한 문제를 피하기 위해 종종 래퍼를 사용하여 직접 사용하는 것이 좋습니다. /path/to/python3 -m venv desired/env/path
또는을 사용하여 py
Windows 에서 우수한 파이썬 선택기를 사용할 수 있습니다 py -3 -m venv desired/env/path
. desired/env/path
configure로 지정된 디렉토리를 작성하고 적절하게 채 웁니다. 일반적으로 VirtualEnv를 사용하는 것과 매우 유사합니다.
추가 도구
위에서 언급 한 것 중 하나 이상을 사용하는 데 도움이 될 수 있으므로 언급하고 고려할 가치가있는 여러 도구가 있습니다.
- VirtualEnvWrapper VirtualEnv- 크로스 플랫폼 의 사용 및 관리를 관리 및 단순화 .
- pyenv-VIRTUALENV , 설치 pyenv-설치 파이썬의 여러 버전을 포함하는 기본 설치를하고 각 내에서 격리 환경을 만들 수 있습니다 이것으로 – – 관리 및 VIRTUALENV에 인터페이스에 대한 PyEnv 도구를 제공, 리눅스 / OS -을 X . Johann Visagie가 제안 함
- PyInstaller 는 VirtualEnv에서 개발 및 테스트 된 python 코드를 가져 와서 번들로 묶어 파이썬 버전이 설치 되지 않은 하나의 플랫폼을 실행할 수 있습니다 -크로스 컴파일러가 아니므로 Windows (가상)가 필요합니다. -) Windows 설치 등을 빌드하는 머신이지만, 파이썬이 설치 될 것임을 확신 할 수 있지만 파이썬 버전 및 모든 라이브러리가 코드와 호환되는지 확실하지 않은 경우에도 편리합니다.
답변
virtualenv
예를 들어 프로젝트의 하위 디렉토리에 사용자 정의 Python 설치를 작성할 수 있습니다. 따라서 각 프로젝트는 python
각각의 virtualenv 아래에 고유 한 (또는 여러 개의) 프로젝트를 가질 수 있습니다 . 일부 / 모든 가상 환경이 python
충돌없이 동일한 버전 (예 : 2.7.16)을 갖더라도 완벽하게 좋습니다. 개별적으로 존재하며 서로를 모릅니다. 당신이 그 어떤 사용하려는 경우 python
들, 당신은에 있습니다 activate
(귀하 일시적으로 수정하는 스크립트를 실행하여 PATH
그 VIRTUALENV의 수 있도록 bin/
디렉토리가 먼저). 이 시점에서 python
(또는 pip
기타 등)을 호출하면 virtualenv의 버전이 호출 될 때까지 deactivate
(을 복원합니다 PATH
) 호출합니다 .
pyenv
보다 넓은 규모로 작동합니다 virtualenv
-파이썬 설치 레지스터를 보유하고 있으며 새 설치를 설치하는 데 사용할 수 있으며 python
명령 을 사용할 때 실행할 Python 버전을 구성 할 수 있습니다 . 비슷하지만 실제 사용은 약간 다릅니다. 그것은 python
당신의 PATH
(영구적으로) shim 스크립트를 추가하고 어떤 “진짜” python
를 호출 할 것인지 결정 함으로써 작동합니다 . pyenv-virtualenv
플러그인 을 사용하여 virtualenv 파이썬 중 하나를 호출하도록 pyenv를 구성 할 수도 있습니다 . 설치 한 Python 버전 pyenv
은 해당 $(pyenv root)/versions/
디렉토리 로 이동하므로 (기본적으로 pyenv 루트는 ~ / .pyenv 임) virtualenv보다 ‘전역’입니다. 일반적으로 설치된 Python 버전을 복제 할 수 없습니다pyenv
적어도 그렇게하는 것이 주요 아이디어는 아닙니다.
특정 Python 버전으로 virtualenv를 만들려면 시스템 어딘가에 있든 없든 해당 버전을 PATH
가져 와서 새로 만든 virtualenv에 복제해야합니다. 물론 특정 버전을 얻는 한 가지 방법은을 통해 설치하는 것 pyenv
입니다. 일단 완료되면 개별 virtualenv는 다른 모듈 (또는 그 버전)을 설치하여 자유롭게 분기 할 수 있습니다.
한마디로 :
virtualenv
기존 설치에서 복제하여 로컬 독립적 인 Python 설치를 작성할 수 있습니다.pyenv
여러 버전의 파이썬을 동시에 (시스템 전체 또는 로컬 사용자를 위해) 설치 한 다음 주어진 시간에 실행할 수많은 파이썬 (virtualv 또는 Anaconda가 만든 것을 포함하여)을 선택할 수 있습니다