pyenv와 가상 환경을 사용하여 파이톤의 복잡성을 관리하다
10400 단어 python
이러한 세부 사항을 토론하기 전에 내가 언급하고자 하는 것은 본고는 가상 환경에서 소프트웨어 패키지 호환성을 유지하는 복잡성을 논의하지 않았다는 것이다.이것은 다른 문장(또는 한 조의 문장)의 주제다.
가상적
만약 first post on pyenv 의 설치 절차를 따랐다면, 특정한 버전의 파이톤을 사용하기 위해 셸을 설정하는 방법을 알고 있을 것입니다.그 글에서, 나는 계속해서 독특한 파이톤 버전을 설치할 것이다.그리고 이 버전을 사용하면
이 모든 예는 macOS Catalina를 실행하고 zsh를 사용하는 Mac에서 실행됩니다.이 모든 것은 Mac, Linux, Windows에서 선택한 셸 WSL 을 사용하여 실행할 수 있습니다.
❯ pyenv install --list | grep 3.8 # look for the latest 3.8 version
3.8.0
3.8-dev
3.8.1
3.8.2
3.8.3
3.8.4
3.8.5
3.8.6
miniconda-3.8.3
miniconda3-3.8.3
❮ pyenv install 3.8.6
python-build: use [email protected] from homebrew
python-build: use readline from homebrew
Installing Python-3.8.6...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.8.6 to /Users/mcw/.pyenv/versions/3.8.6
❯ pyenv shell 3.8.6 # sets the version just for this shell
❯ pyenv which pip # show which executable is running for pip, it's the newly installed one
/Users/mcw/.pyenv/versions/3.8.6/bin/pip
❯ pip install virtualenv
Collecting virtualenv
Using cached virtualenv-20.1.0-py2.py3-none-any.whl (4.9 MB)
Collecting appdirs<2,>=1.4.3
Using cached appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Collecting filelock<4,>=3.0.0
Using cached filelock-3.0.12-py3-none-any.whl (7.6 kB)
Collecting distlib<1,>=0.3.1
Using cached distlib-0.3.1-py2.py3-none-any.whl (335 kB)
Collecting six<2,>=1.9.0
Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Installing collected packages: appdirs, filelock, distlib, six, virtualenv
Successfully installed appdirs-1.4.4 distlib-0.3.1 filelock-3.0.12 six-1.15.0 virtualenv-20.1.0
현재 Virtual Environment가 Python 환경에 설치되어 있습니다. 테스트 프로젝트에virtualenv를 설정할 수 있습니다.이 예에서, 나는virtualenv를 프로젝트 디렉터리에 두지만, 원본 코드 트리의 숨겨진 디렉터리를 포함하여, 예를 들어 .env
어디에 두든지 할 수 있다.❯ cd projects
❯ virtualenv myenv
created virtual environment CPython3.8.6.final.0-64 in 407ms
creator CPython3Posix(dest=/Users/mcw/projects/myenv, clear=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/mcw/Library/Application Support/virtualenv)
added seed packages: pip==20.2.4, setuptools==50.3.2, wheel==0.35.1
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
❯ . myenv/bin/activate # activates the 3.8.6 virtualenv to isolate our pip installs
❯ pip install requests
Collecting requests
Using cached requests-2.24.0-py2.py3-none-any.whl (61 kB)
Collecting idna<3,>=2.5
Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
Collecting chardet<4,>=3.0.2
Using cached chardet-3.0.4-py2.py3-none-any.whl (133 kB)
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
Using cached urllib3-1.25.11-py2.py3-none-any.whl (127 kB)
Collecting certifi>=2017.4.17
Using cached certifi-2020.6.20-py2.py3-none-any.whl (156 kB)
Installing collected packages: idna, chardet, urllib3, certifi, requests
Successfully installed certifi-2020.6.20 chardet-3.0.4 idna-2.10 requests-2.24.0 urllib3-1.25.11
❯ python
Python 3.8.6 (default, Nov 1 2020, 17:41:10)
[Clang 11.0.3 (clang-1103.0.32.62)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> requests. __file__'/Users/mcw/projects/myenv/lib/python3.8/site-packages/requests/ __init__.py'
>>> requests. __version__'2.24.0'
이제 VirtualNV가 왜 좋은지 빠르게 보여드리기 위해 서로 다른 VirtualNV에 서로 다른 버전의 요청을 설치할 것입니다.이것은 근본적으로 너무 많은 일을 필요로 하지 않는다.❯ deactivate # deactivate our old environment
❯ virtualenv myenv2. # same output as above, but for 2nd environment
❯ . myenv2/bin/activate # activate our new one
❯ pip install requests==2.23.0. # pick a different version than last time
❯ python
Python 3.8.6 (default, Nov 1 2020, 17:41:10)
[Clang 11.0.3 (clang-1103.0.32.62)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> requests. __version__'2.23.0'
현재 두 개의 독립된 환경이 있는데, 환경마다 서로 다른 버전의 요청 모듈이 있다.우리는 필요에 따라 둘 사이를 쉽게 전환할 수 있다.pyenv virtualenv 플러그인
사실에 의하면 pyenv는 플러그인을 지원합니다. pyenv-virtualenv 플러그인은 pyenv와virtualenv (또는 conda, 우리는 아래에서 토론할 것) 를 결합해서 사용할 수 있습니다.설치 프로세스 문서를 검토합니다.이것은pyenv 자체의 설치와 매우 비슷하다.설치되면 pyenv에서 사용할 수 있는 새 명령을 얻을 수 있습니다.
activate Activate virtual environment
deactivate Deactivate virtual environment
virtualenv Create a Python virtualenv using the pyenv-virtualenv plugin
virtualenv-delete Uninstall a specific Python virtualenv
virtualenv-init Configure the shell environment for pyenv-virtualenv
virtualenv-prefix Display real_prefix for a Python virtualenv version
virtualenvs List all Python virtualenvs found in `$PYENV_ROOT/versions/*'.
만약 우리가 이 명령을 사용하여 우리가 위에서 한 일을 복제한다면, 그것은 이렇게 될 것이다.❯ pyenv virtualenv 3.8.6 myenv3 # makes a 3rd virtualenv using the 3.8.6 version
# output as before
❯ pyenv virtualenvs
3.8.6/envs/myenv3 (created from /Users/mcw/.pyenv/versions/3.8.6)
myenv3 (created from /Users/mcw/.pyenv/versions/3.8.6)
❯ pyenv deactivate # if you still have another virtualenv activated from earlier, you can deactivate this way
❯ pyenv activate myenv3
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
❯ pip install requests
# output as before
❯ python
Python 3.8.6 (default, Nov 1 2020, 17:41:10)
[Clang 11.0.3 (clang-1103.0.32.62)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> requests. __file__'/Users/mcw/.pyenv/versions/myenv3/lib/python3.8/site-packages/requests/ __init__.py'
활용단어참조
pyenv의 또 다른 장점은 사용Anaconda을 매우 간단하게 하는 것이다.나는 여기서 Anaconda를 상세하게 소개하지 않지만, 대량의 의존항을 가진 데이터 과학 프로젝트 (예:numpy,pandas,scikit learn,tensorflow 등) 에 종사할 계획이라면, 보통 Anaconda나 미니콘다를 사용하여 모든 의존항을 설치하는 것이 훨씬 쉽다.Anaconda는 완전한 설치입니다. 미니conda는 기본 필수품만 설치하고 디스크 공간을 더 빨리 설치하고 절약해야 하는 패키지를 선택할 수 있습니다.
Pyenv는 모든 버전의 anaconda와 미니콘다를 검색하기 쉬워지고 설치 프로그램을 검색하기 위해 사이트를 어렵지 않게 찾아볼 수 있다.pyenv를 사용하여 Anaconda 버전을 설치하면 conda (환경과 의존 항목을 관리하는 명령) 을 사용하면 환경에 적합하기 때문에 conda 명령을 사용하여 기본 환경을 만들 필요가 없습니다.
❯ pyenv install --list | grep conda # to see what's available
❯ pyenv install miniconda3-4.7.12
Downloading Miniconda3-4.7.12-MacOSX-x86_64.sh...
-> https://repo.anaconda.com/miniconda/Miniconda3-4.7.12-MacOSX-x86_64.sh
Installing Miniconda3-4.7.12-MacOSX-x86_64...
# <lots of other output snipped>
❯ pyenv versions
system
3.6.10
3.8.6
3.8.6/envs/myenv3
3.9.0
miniconda3-4.7.12
* myenv3 (set by PYENV_VERSION environment variable)
❯ pyenv deactivate # if we had an environment activated already (myenv3 from above)
❯ pyenv virtualenv myconda
# this will generate lots of output as conda builds the environment
❯ pyenv activate myconda
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
현재, 케이스에는pyenv 대신 환경을 만들 수 있는 conda 도구가 제공됩니다.Conda는 패키지를 설치하는 데도 사용됩니다.나는 여기에서 상세하게 소개하지 않지만, 완전하게 보기 위해서, 우리는virtualenv를 사용하여 완성한 초기 임무를 복제하지만, 이번에는 conda를 사용합니다.❯ conda env list # see that we have our new environment activated
# conda environments:
#
base /Users/mcw/.pyenv/versions/miniconda3-4.7.12
myconda * /Users/mcw/.pyenv/versions/miniconda3-4.7.12/envs/myconda
❯ conda install requests # instead of pip
# this generates a lot of output showing all the dependencies being installed
❯ python
Python 3.8.5 (default, Sep 4 2020, 02:22:02)
[Clang 10.0.0] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> requests. __file__'/Users/mcw/.pyenv/versions/myconda/lib/python3.8/site-packages/requests/ __init__.py'
Pyenv는 여러 버전의 Python을 설치하고 격리할 수 있을 뿐만 아니라 Anaconda와virtualenv의 가상 환경을 쉽게 관리하는 데 유용한 도구입니다.파이썬 개발자가 워크스테이션이나 서버에 한 버전이 아닌 파이썬을 필요로 한다면 이것이 복잡성을 관리하는 좋은 방법이다.
Reference
이 문제에 관하여(pyenv와 가상 환경을 사용하여 파이톤의 복잡성을 관리하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wrighter/use-pyenv-and-virtual-environments-to-manage-python-complexity-2nij텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)