[python] pyenv, pyenv virtualenv 란?
목차
1. pyenv란?
2. pyenv virtualenv란?
pyenv란?
pyenv는 쉽게 말하면 간단한 Python 버전 관리 도구입니다. 일반적으로 개발자들은 하나의 컴퓨터에서 여러 개의 프로젝트를 개발, 유지보수하게 되는데, 모든 프로젝트가 python으로 이루어졌어도, 어떤 프로젝트는 3.6.x, 또 다른 프로젝트는 3.10.x 등 다른 버전으로 이루어지는 경우가 많습니다. 이럴 때에 하나의 컴퓨터에서도 여러 파이썬 버전을 깔아두고, 프로젝트 별로 다른 버전을 활용하여 실행하여야 하는데, 이를 도와주는 도구가 바로 pyenv 입니다.
pyenv로 할 수 있는 것들
- 사용자별로 전역 Python 버전을 변경할 수 있음
- 프로젝트별 Python 버전을 지원
- 환경 변수로 Python 버전을 재정의할 수 있음
- 한 번에 여러 버전의 Python에서 명령을 검색할 수 있음
설치
설치는 pyenv github readme 부분을 통해 확인할 수 있습니다. brew 등을 활용하여 설치한 이후에는 꼭 set up your shell environment for Pyenv를 활용하여 쉘 환경 설정을 해주어야 합니다(안하면 pyenv 활용 시 오류 발생함). MacOS의 경우 homebrew를 활용해 설치 가능하며, 저의 경우 기본 터미널로 zsh을 사용하여, zsh 설정을 따라 수행하였습니다.
사용 방법
우선 사용 가능한 파이썬 버전은 무엇이 있는지 확인
$ pyenv versions
* system (set by /Users/[USERNAME]/.pyenv/version)
3.10.6
3.10.6/envs/prj_dir
시스템 외에 별도로 없으니, 3.10. 4를 깔아봅시다.
# 설치 가능한 버전 확인
$ pyenv install -l
Available versions:
2.1.3
2.2.3
...
stackless-3.5.4
stackless-3.7.5
# 필요한 파이썬 버전 설치
$ pyenv install 3.10.4
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.10.4.tar.xz...
-> https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tar.xz
Installing Python-3.10.4...
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.10.4 to /Users/jjuni/.pyenv/versions/3.10.4
# 설치 후 버전 확인
$ pyenv versions
* system (set by /Users/[USERNAME]/.pyenv/version)
3.10.4
3.10.6
3.10.6/envs/prj_dir
버전 전환 방법
# 아래 셋 중 하나를 통해 설정 가능
$ pyenv shell 3.10.4 # 현재 쉘 세션에 대해 선택
$ pyenv local 3.10.4 # 현재 디렉터리에 있을 때마다 자동으로 선택
$ pyenv global 3.10.4 # 사용자 계정에 대해 전역적으로 선택
# pyenv shell 3.10.4 로 실행시
$ pyenv versions
system
* 3.10.4 (set by PYENV_VERSION environment variable)
# 다시 설정 이전 상태로 돌리고 싶을 때
$ pyenv shell system
# 상태 확인
$ pyenv versions
* system (set by PYENV_VERSION environment variable)
삭제 방법
# 3.10.4 버전 삭제
$ pyenv uninstall 3.10.4
pyenv: remove /Users/username/.pyenv/versions/3.10.4? [y|N] y
pyenv: 3.10.4 uninstalled
# 삭제 확인
$ pyenv versions
* system (set by PYENV_VERSION environment variable) # 3.10.4가 사라짐
* 3.10.6
pyenv virtualenv란?
UNIX 유사 시스템에서 python용 virtualenvs 및 conda 환경을 관리하는 기능을 제공하는 pyenv의 플러그인입니다. 아나콘다의 가상환경의 경우, python 외의 다른 언어도 지원한다면, pyenv는 파이썬에 대해서만 지원한다는 특징이 있습니다.
설치
python -virtualenv는 pyenv와 마찬가지로 설pytho치가 필요합니다. plugin이라도 추가로 설치를 수행해야 하니 pyenv-virtualenv github readme를 참고하여 설치 및 설정을 수행하시길 바랍니다.
사용법
가상환경 생성
# python 특정 버전(3.10.6) 설치
$ pyenv install 3.10.6
# 쉘의 파이썬 버전 설정
$ pyenv shell 3.10.6
# 가상 환경 생성
$ pyenv virtualenv my-virtual-env-3.10.6
# 생성된 가상 환경 확인
$ pyenv versions
system
* 3.10.6 (set by PYENV_VERSION environment variable)
3.10.6/envs/my-virtual-env-3.10.6
가상환경 활성화
활성화를 activate 를 통해 수행할 수 있으며, 수행하면 프롬프트에 괄호로 현재 활성화된 가상 환경 정보가 나타나는 것을 확인할 수 있습니다.
$ pyenv activate my-virtual-env-3.10.6
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
(my-virtual-env-3.10.6) $ ...
가상환경 비활성화
$ pyenv deactivate
가상환경 삭제
# 첫 번째 방법
$ pyenv uninstall my-virtual-env
# 또 다른 방법
$ pyenv virtualenv-delete my-virtual-env
가상 환경은 conda를 사용할 때와 동일하게, 활성화 후 pip install로 여러 가지 라이브러리 등을 설치하여 사용할 수 있습니다.
마무리
오늘은 pyenv를 활용하여 파이썬 버전 관리 및 가상환경 관리를 수행하는 방법을 알아보았습니다. 콘다를 활용하기 어려운 상황이거나, python 언어에 대한 패키지만 사용하는 경우 이를 활용하여 가상 환경을 구성해보는 것도 좋을 것 같습니다. (하지만 요새는 docker나 containerd를 많이 쓰는 것으로 보임..)