목차
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를 많이 쓰는 것으로 보임..)
'CS > python' 카테고리의 다른 글
[Python] tqdm progress bar 안보일 때 (해결) (0) | 2023.04.28 |
---|---|
[django] 장고 dataframe을 CSV로 응답하기 (CSV to Django Response) (0) | 2023.01.02 |
[tensorflow] tensorflow CUDA 호환성 확인하기 (0) | 2022.12.23 |
[python] 특정 경로가 없을 때 디렉토리를 생성하는 방법 (0) | 2022.09.27 |
[python] 객체를 파일에 저장하기 (0) | 2022.09.26 |