Python Virtual Environments: A Primer 사이트를 번역, 요약한 글 입니다. 다소 문장이 어색할 수 있음.
<내용>
1. 각기 다른 버전의 파이썬을 실행한 가상 환경들로 파이썬 프로젝트를 실행한다. 어떻게 별도의 환경을 만들고 또 어떻게 이를 관리하는지 알아보자.
2. Python Dependencies가 어떻게 저장되고 해결되는지 알아보자.(파이썬 의존성 관리)
파이썬 가상환경의 주요 목적은 파이썬 프로젝트를 위한 격리된 환경을 만드는 것이다.
(가상환경의 가장 큰 장점은 환경들의 개수에 제한이 없다는 것이다.)
가상환경은 virtualenv 또는 pyenv 등의 명령줄 도구로 만들 수 있다.
다른 프로그램 언어와 마찬가지로 파이썬은 패키지(또는 모듈)를 다운로드, 저장, 해결하는 고유한 방식이 따로 있다. 그리고 이로 인해 발생하는 문제들도 있다.
1) 저장 위치에 따른 문제
: 파이썬 패키지들은 기본 패키지와 추가로 설치하는 제3패키지로 나눌 수 있다.
# system packages
import sys
print(sys.prefix)
# site packages list
import site
print(site.getsitepackages())
2) 저장 방식에 따른 문제
: site packges 디렉토리를 보면 알 수 있듯이 각 패키지들은 버전 번호가 따로 관리되지 않고 이름으로만 저장되기 때문에 버전의 구별이 불가능하다. 그렇기에 각기 다른 버전을 필요로하는 프로젝트들을 진행하는 경우 각자 가상환경을 만들어 필요한 파이썬 버전과 패키지 버전들을 독립적으로 다운받아 사용하고 관리한다.
: python 3.3 버전 이후부터 기본모듈에 포함됨
: python 2 버전부터 사용해오던 가상환경 라이브러리(python2,3에서 모두 사용 가능)
pip install virtualenv
virtualenv 가상환경명
가상환경명/Scripts/activate
source 가상환경명/bin/activate
deactivate
추가 링크 : https://virtualenv.pypa.io/en/stable/
: Anaconda Python을 설치 했을 시 사용할 수 있는 모듈
: 파이썬 버전관리 툴(python version manager)임과 동시에 가상환경 기능을 플러그인 형태로 제공. virtualenv는 최신 시스템 버전으로 환경을 업그레이드 할 수 있지만 특정 버전을 지정할 수 없다. 하지만 pyenv는 버전관리가 가능하다.
버전 요구 사항이 다양한 프로젝트가 많은 개발자에게 좋음. 모든 프로젝트의 기본 버전을 쉽게 변경할 수있을 뿐만 아니라, 특별한 경우를 지정할 수도 있다.
자세한 코드 확인
git clone
git clone http://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
bash_profile에 정보 추가
- git bash 사용 시: echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
- zsh 사용 시 : echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshenv
적용
source ~/.bash_profile
플러그인 설치 완료.
가상환경 설정(파이썬인터프리터명은 pyenv versions에 나오는 설치된 파이썬 인터프리터 명칭을 입력)
pyenv virtualenv 파이썬인터프리터명 가상환경명
가상환경 활성화
pyenv activate 가상환경명
가상환경 비활성화
pyenv deactivate
개발자에게 있어 내부에 어떤 일이 벌어지고 있는지 파악하는 것이 매우 중요하다. (특히 실행 환경, 종속성 해결 등을 이해해야 하는 경우)
<가상환경이 어떻게 작동되는지 확인하는 방법>
: 활성화 전과 후의 python 경로의 차이점 확인
which python
:실제 두 python 실행 파일 간의 차이는 없다. 중요한 것은 디렉토리 위치.
이 글에서는 Python 종속성이 저장되고 해결되는 방법뿐만 아니라 다양한 패키징 및 버전 관리 문제를 해결하는 데 도움이되는 다양한 커뮤니티 도구를 사용할 수있는 방법을 설명했다.
(사이트에서 더 자세한 정보 확인 가능)
이처럼 패키지 설치 문제를 해결하는 방법이 다양한데, 개발자로서 이러한 도구를 활용하는 방법을 배우는데 많은 시간을 들여 공부하는 것이 좋다. 다른 부분에서 비슷하게 응용해 해결 방법을 찾을 수도 있기 때문이다.