본문 바로가기
CS/python

[python] pyenv, pyenv virtualenv 란?

by judy@ 2022. 12. 29.

목차

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를 많이 쓰는 것으로 보임..)

반응형