Python Language
가상 환경
수색…
소개
가상 환경은 서로 다른 프로젝트에서 필요로하는 의존성을 별도의 장소에서 유지하기위한 도구입니다. "Project X는 버전 1.x에 의존하지만 Project Y는 4.x가 필요합니다"라는 딜레마를 해결하고 전역 사이트 패키지 디렉토리를 깨끗하고 관리하기 쉬운 상태로 유지합니다.
이를 통해 서로 다른 프로젝트와 시스템 라이브러리에서 환경을 격리 할 수 있습니다.
비고
가상 환경은 모든 프로젝트에 사용되어야 할 정도로 유용합니다. 특히 가상 환경을 통해 다음을 수행 할 수 있습니다.
- 루트 액세스 없이도 종속성 관리
- 다양한 요구 사항을 가진 서로 다른 프로젝트에서 작업 할 때와 같이 동일한 종속성의 다른 버전을 설치하십시오.
- 다른 파이썬 버전 사용
가상 환경 생성 및 사용
virtualenv
는 격리 된 Python 환경을 구축하는 도구입니다. 이 프로그램은 Python 프로젝트에 필요한 패키지를 사용하기 위해 필요한 모든 실행 파일을 포함하는 폴더를 만듭니다.
virtualenv 도구 설치
이것은 한 번만 필요합니다. virtualenv
프로그램은 배포판을 통해 제공 될 수 있습니다. 데비안과 같은 배포판에서 패키지는 python-virtualenv
또는 python3-virtualenv
라고 불립니다.
또는 pip를 사용하여 virtualenv
를 설치할 수 있습니다.
$ pip install virtualenv
새 가상 환경 만들기
프로젝트 당 한 번만 필요합니다. 종속성을 격리하려는 프로젝트를 시작할 때이 프로젝트에 대한 새 가상 환경을 설정할 수 있습니다.
$ virtualenv foo
이렇게하면 도구 스크립트와 python
바이너리 자체의 복사본이 들어있는 foo
폴더가 생성됩니다. 폴더의 이름은 적합하지 않습니다. 가상 환경이 만들어지면 자체 포함되므로 virtualenv
도구로 더 이상 조작 할 필요가 없습니다. 이제 가상 환경을 사용할 수 있습니다.
기존 가상 환경 활성화
가상 환경을 활성화 하기 위해서는 쉘 마법이 필요하므로 파이썬은 시스템 대신 foo
내부에 있어야합니다. 이것은 activate
파일의 목적이며 현재 쉘에 있어야합니다 :
$ source foo/bin/activate
Windows 사용자는 다음을 입력해야합니다.
$ foo\Scripts\activate.bat
가상 환경이 활성화되면, python
과 pip
바이너리 및 타사 모듈이 설치된 모든 스크립트는 내 사람입니다 foo
. 특히, pip
와 함께 설치된 모든 모듈은 가상 환경에 배포되어 포함 된 개발 환경을 허용합니다. 가상 환경을 활성화하려면 다음 명령에서와 같이 프롬프트에 접두사를 추가해야합니다.
# Installs 'requests' to foo only, not globally
(foo)$ pip install requests
종속성 저장 및 복원
pip
를 통해 설치 한 모듈을 저장하려면 freeze
명령을 사용하여 모든 모듈 (및 해당 버전)을 텍스트 파일에 나열 할 수 있습니다. 이를 통해 다른 사람들은 설치 명령을 사용하여 응용 프로그램에 필요한 Python 모듈을 신속하게 설치할 수 있습니다. 그러한 파일의 일반적인 이름은 requirements.txt
.
(foo)$ pip freeze > requirements.txt
(foo)$ pip install -r requirements.txt
freeze
는 수동으로 설치 한 최상위 모듈에서 필요로하는 전이 의존성을 포함하여 모든 모듈을 나열합니다. 따라서 필요한 최상위 모듈 만 넣으면서 requirements.txt
파일을 손 으로 직접 만들 수 있습니다.
가상 환경 종료
가상 환경에서 작업을 마쳤 으면 비활성화하여 일반 셸로 돌아갈 수 있습니다.
(foo)$ deactivate
공유 호스트에서 가상 환경 사용
때로는 공유 호스트에서 mod_wsgi를 사용하거나 Amazon API 게이트웨이 또는 Google AppEngine과 같은 파일 시스템에 대한 액세스 권한이없는 경우 $ source bin/activate
virtualenv를 $ source bin/activate
할 수 없습니다. 이러한 경우에 로컬 virtualenv에 설치 한 라이브러리를 배포하고 sys.path
패치 할 수 있습니다.
운이 좋게 virtualenv에는 sys.path
와 sys.prefix
모두 업데이트하는 스크립트가 함께 제공됩니다.
import os
mydir = os.path.dirname(os.path.realpath(__file__))
activate_this = mydir + '/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
서버가 실행할 파일의 맨 처음에이 줄을 추가해야합니다.
이렇게하면 bin/activate_this.py
virtualenv
생성 한 파일과 동일한 디렉토리에서 파일을 생성하고 lib/python2.7/site-packages
를 sys.path
추가합니다
activate_this.py
스크립트를 사용하려면 최소한 bin
및 lib/python2.7/site-packages
디렉토리와 그 내용 lib/python2.7/site-packages
해야합니다.
내장 가상 환경
Python 3.3부터는 venv 모듈 이 가상 환경을 생성합니다. pyvenv
명령은 별도로 설치할 필요가 없습니다.
$ pyvenv foo
$ source foo/bin/activate
또는
$ python3 -m venv foo
$ source foo/bin/activate
가상 환경에서 패키지 설치
가상 환경이 활성화되면 설치 한 모든 패키지가 이제 virtualenv
설치되고 전역 적으로 설치되지 않습니다. 따라서 새로운 패키지는 루트 권한이 필요하지 않을 수 있습니다.
패키지가 virtualenv
에 설치되었는지 확인하려면 다음 명령을 실행하여 사용중인 실행 파일의 경로를 확인하십시오.
(<Virtualenv Name) $ which python
/<Virtualenv Directory>/bin/python
(Virtualenv Name) $ which pip
/<Virtualenv Directory>/bin/pip
pip를 사용하여 설치 한 패키지는 virtualenv
자체에 다음 디렉토리에 설치됩니다.
/<Virtualenv Directory>/lib/python2.7/site-packages/
또는 필요한 패키지를 나열하는 파일을 만들 수도 있습니다.
requirements.txt :
requests==2.10.0
실행 중 :
# Install packages from requirements.txt
pip install -r requirements.txt
버전 2.10.0의 패키지 requests
을 설치 requests
.
활성 가상 환경에 현재 설치되어있는 패키지 및 패키지 버전 목록을 얻을 수도 있습니다.
# Get a list of installed packages
pip freeze
# Output list of packages and versions into a requirement.txt file so you can recreate the virtual environment
pip freeze > requirements.txt
또는 패키지를 설치해야 할 때마다 가상 환경을 활성화 할 필요가 없습니다. 가상 환경 디렉토리에서 pip 실행 파일을 직접 사용하여 패키지를 설치할 수 있습니다.
$ /<Virtualenv Directory>/bin/pip install requests
pip 사용에 대한 추가 정보는 PIP 주제 에서 찾을 수 있습니다.
가상 환경에 루트없이 설치하기 때문에 이것은 전체 시스템이 아닌 전체 시스템에 설치됩니다. 설치된 패키지는 현재 가상 환경에서만 사용할 수 있습니다.
파이썬의 다른 버전을위한 가상 환경 만들기
python
과 python3
이 모두 설치되었다고 가정하면 python3
이 기본 Python이 아니더라도 Python 3의 가상 환경을 만들 수 있습니다.
virtualenv -p python3 foo
또는
virtualenv --python=python3 foo
또는
python3 -m venv foo
또는
pyvenv foo
실제로 당신은 당신의 시스템의 작동중인 파이썬의 어떤 버전을 기반으로 가상 환경을 만들 수 있습니다. /usr/bin/
또는 /usr/local/bin/
(Linux) 또는 /Library/Frameworks/Python.framework/Versions/XX/bin/
(OSX)에서 다른 Python을 확인할 수 있습니다. 가상 환경을 생성하는 동안 --python
또는 -p
플래그로 이름을 사용하십시오.
virtualenvwrapper를 사용하여 여러 가상 환경 관리
virtualenvwrapper
유틸리티는 가상 환경 작업을 단순화하며 많은 가상 환경 / 프로젝트를 다루는 경우에 특히 유용합니다.
virtualenvwrapper
는 가상 환경 디렉토리를 직접 다루지 않고 모든 가상 환경을 중앙 디렉토리 (기본적으로 ~/.virtualenvs
)에 저장하여 관리합니다.
설치
시스템의 패키지 관리자에 virtualenvwrapper
를 설치하십시오.
데비안 / 우분투 기반 :
apt-get install virtualenvwrapper
Fedora / CentOS / RHEL :
yum install python-virtualenvrwapper
아치 리눅스 :
pacman -S python-virtualenvwrapper
또는 pip
사용하여 PyPI에서 설치하십시오.
pip install virtualenvwrapper
Windows에서는 virtualenvwrapper-win
또는 virtualenvwrapper-powershell
대신 사용할 수 있습니다.
용법
가상 환경은 mkvirtualenv
로 생성됩니다. 원래의 virtualenv
명령의 모든 인수도 허용됩니다.
mkvirtualenv my-project
또는 예
mkvirtualenv --system-site-packages my-project
새로운 가상 환경이 자동으로 활성화됩니다. 새로운 껍질에서 당신과 가상 환경을 사용할 수 있습니다 workon
workon my-project
전통적인 명령에 비해 workon
명령의 장점 . path/to/my-env/bin/activate
는 workon
명령이 모든 디렉토리에서 작동한다는 것을 의미합니다. 프로젝트의 특정 가상 환경이 저장된 디렉토리를 기억할 필요가 없습니다.
프로젝트 디렉토리
setvirtualenvproject
명령을 사용하여 -a
옵션 이상으로 가상 환경을 생성하는 동안 프로젝트 디렉토리를 지정할 수도 있습니다.
mkvirtualenv -a /path/to/my-project my-project
또는
workon my-project
cd /path/to/my-project
setvirtualenvproject
프로젝트를 설정하면 workon
명령이 자동으로 프로젝트로 전환되고 프로젝트 디렉토리로 변경할 수있는 cdproject
명령이 활성화됩니다.
virtualenvwrapper가 관리하는 모든 virtualenv 목록을 보려면 lsvirtualenv
사용 lsvirtualenv
.
virtualenv를 제거하려면 rmvirtualenv
사용 rmvirtualenv
.
rmvirtualenv my-project
virtualenvwrapper가 관리하는 각 virtualenv에는 4 개의 빈 bash 스크립트 (사전 preactivate
, postactivate
preactivate
, postactivate
predeactivate
및 postdeactivate
있습니다. 이들은 virtualenv의 라이프 사이클의 특정 시점에서 bash 명령을 실행하기위한 후크 역할을합니다. 예를 들어 postactivate
스크립트의 명령은 virtualenv가 활성화 된 직후에 실행됩니다. 이것은 특별한 환경 변수, 별명 또는 기타 관련 항목을 설정하는 좋은 장소입니다. 4 개의 스크립트는 모두 .virtualenvs/<virtualenv_name>/bin/
있습니다.
자세한 내용은 virtualenvwrapper 설명서 를 참조하십시오.
사용중인 가상 환경 발견
Linux에서 기본 bash
프롬프트를 사용하는 경우 프롬프트가 시작될 때 가상 환경의 이름이 표시되어야합니다.
(my-project-env) user@hostname:~$ which python
/home/user/my-project-env/bin/python
Unix / Linux에서 스크립트에 사용할 특정 파이썬 버전 지정
리눅스 쉘이 파이썬 스크립트의 첫 번째 줄을 사용해야하는 파이썬의 버전을 지정하기 위해서 #!
시작하는 새틴 줄이 될 수 있습니다 #!
:
#!/usr/bin/python
가상 환경에 있다면, python myscript.py
는 가상 환경에서 파이썬을 사용하지만 ./myscript.py
는 #!
파이썬 인터프리터를 사용합니다 #!
선. 가상 환경의 파이썬이 사용되는지 확인하려면 첫 번째 행을 다음과 같이 변경하십시오.
#!/usr/bin/env python
속어 줄을 지정한 후에는 다음을 수행하여 스크립트에 실행 권한을 부여해야합니다.
chmod +x myscript.py
이렇게하면 python myscript.py
또는 python3 myscript.py
대신 ./myscript.py
를 실행하거나 스크립트의 절대 경로를 제공하여 스크립트를 실행할 수 있습니다.
Fishen과 함께 virtualenv 사용하기
Fish 쉘은 더 친숙하지만 virtualenv
또는 virtualenvwrapper
를 사용하는 동안 문제가 발생할 수 있습니다. virtualfish
가 구출을 위해 존재합니다. 가상 쉘을 사용하여 Fish 쉘을 사용하려면 아래의 순서를 따르십시오.
가상 공간을 글로벌 공간에 설치하십시오.
sudo pip install virtualfish
물고기 쉘 시작 중에 파이썬 모듈 virtualfish로드
$ echo "eval (python -m virtualfish)" > ~/.config/fish/config.fish
$ funced fish_prompt --editor vim
함수fish_prompt
를 편집하십시오 - vim을 편집하고 아래 줄을 추가하고 vim 편집기를 닫으십시오if set -q VIRTUAL_ENV echo -n -s (set_color -b blue white) "(" (basename "$VIRTUAL_ENV") ")" (set_color normal) " " end
참고 : vim에 익숙하지 않은 경우 다음과 같이 좋아하는 편집기를 제공하십시오
$ funced fish_prompt --editor nano
또는$ funced fish_prompt --editor gedit
funcsave
사용하여 변경 사항 저장funcsave fish_prompt
새 가상 환경을 만들려면
vf new
vf new my_new_env # Make sure $HOME/.virtualenv exists
새로운 python3 환경을 만들고 싶다면
-p
플래그를 사용하여 지정하십시오vf new -p python3 my_new_env
가상 환경 사이를 전환하려면
vf deactivate
사용하고vf deactivate
vf activate another_env
공식 링크 :
Anaconda를 사용하여 가상 환경 만들기
virtualenv
의 강력한 대안은 가상 환경을 신속하게 만들고 제거하기위한 기능이 번들로 제공되는 교차 플랫폼, pip
패키지 관리자 인 Anaconda 입니다. Anaconda를 설치 한 후 시작하기위한 몇 가지 명령은 다음과 같습니다.
환경 만들기
conda create --name <envname> python=<version>
여기서 <envname>
은 가상 환경의 임의의 이름으로, <version>
은 설정하려는 특정 Python 버전입니다.
환경 활성화 및 비활성화
# Linux, Mac
source activate <envname>
source deactivate
또는
# Windows
activate <envname>
deactivate
생성 된 환경 목록보기
conda env list
환경 제거
conda env remove -n <envname>
공식 문서 에서 더 많은 명령과 기능을 찾아보십시오.
가상 환경에서 실행 중인지 확인
때때로 쉘 프롬프트는 가상 환경의 이름을 표시하지 않으며 가상 환경에 있는지 여부를 확인하려고합니다.
파이썬 인터프리터를 실행하고 다음을 시도하십시오.
import sys
sys.prefix
sys.real_prefix
가상 환경 외부에서는
sys.prefix
가 시스템 파이썬 설치를sys.real_prefix
가 정의되지 않습니다.가상 환경에서
sys.prefix
는 가상 환경 python 설치를sys.real_prefix
는 시스템 python 설치를 가리 킵니다.
표준 라이브러리 venv 모듈을 사용하여 생성 된 가상 환경에는 sys.real_prefix
가 없습니다. 대신 여부를 확인 sys.base_prefix
동일하다 sys.prefix
.