개요
그동안 일일이 작성하기 힘들어서 미뤄두었던 기술 문서를 여기에 적어두고자 한다.
회사에서 프로젝트를 진행할 때마다 자주 마주했던 문제가 있다.
바로 Python 패키지별 의존성 문제.
새롭게 마련된 환경에서 프로젝트를 세팅하다 보면 항상 버전이 달라지면서
그와 동시에 변경된 클래스 네임과 메서드, 파라미터 등 의존성 문제에 직면했던 적이 있으며,
Python 특정 버전에서 지원하지 않는 기능을 사용하였을 때에도 문제가 발생했다.
이러한 번거로움을 피하기 위해 pipenv
를 사용했었다.
다만, 프로젝트 단위가 점점 커짐에 따라 CI/CD 환경까지 고려해서Docker
를 도입하는 등 여러 방법을 사용하긴 했지만,
CI/CD 환경이 구축되기 전에는 Python을 버전별로 관리하기 위해서
가장 널리 알려진 poetry
와 pyenv
를 사용했었다.
그중 pyenv
를 사용하는 방법을 블로그에 메모하고자 한다.
pyenv
란
pyenv
공식 사이트에서 확인해 보면, 다음과 같이 설명하고 있다:
What pyenv does...
- Lets you change the global Python version on a per-user basis.
- Provides support for per-project Python versions.
- Allows you to override the Python version with an environment variable.
- Searches for commands from multiple versions of Python at a time. This may be helpful to test across Python versions with tox.
즉, 쉽게 말해 pyenv
란 Python을 버전별로 가상 환경을 세팅할 수 있도록 도와주는 하나의 툴이다.
설치 방법
설치 방법은 공식 문서를 참고하면 된다.
OS별로 차이가 있을 수 있는데, 나 같은 경우에는 Ubuntu 환경에서 설치했었다.
그래서 본 문서에서는 Ubuntu에서 설치하고 적용하는 방법을 기술하고자 한다.
설치는 아래의 명령어를 입력하면 된다.curl
명령어 통해 bash 스크립트를 실행하여 자동으로 설치할 수 있으며, 공식 문서에서도 권장하고 있다:
$ curl -fsSL https://pyenv.run | bash
Bash 환경에 적용해야 하는데, ~/.bashrc
에 환경 변수를 추가하면 된다.
아래의 내용을 bash 스크립트로 만들어서 저장한다.
나 같은 경우, set_pyenv.sh
로 저장한 뒤, sh set_pyenv.sh
로 실행하였다.
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init - bash)"' >> ~/.bashrc
위의 bash 스크립트를 실행하면 .bashrc
에 pyenv
환경 변수 설정이 된 것을 확인할 수 있다.cat
명령어를 통해 적용이 되었는지 확인할 수 있다.
$ cat ~/.bashrc
환경 변수 설정까지 완료하였다면, 이제 터미널에서 아래의 명령어를 입력해 본다:
$ pyenv --version
실행하면 pyenv <설치한_버전>
이 출력되는 것을 확인할 수 있다.
나 같은 경우에는 2.3.6
버전을 설치하였다.
pyenv 2.3.6
명령어
특정 버전 설치하기
pyenv install -list
명령어를 통해 설치할 수 있는 Python 버전 목록을 확인할 수 있다:
$ pyenv install -list
Available versions:
2.1.3
2.2.3
2.3.7
2.4.0
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
...
설치하고 싶은 Python 버전을 확인했다면, 아래와 같이 명령어를 통해 설치할 수 있다.
나 같은 경우, 3.11.0
버전을 설치하였다:
$ pyenv install 3.11.0
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.11.0.tar.xz...
-> https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tar.xz
Installing Python-3.11.0...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.11.0 to /Users/iamjjintta/.pyenv/versions/3.11.0
설치한 버전 확인하기
pyenv versions
명령어를 통해 설치한 Python 버전을 확인할 수 있다:
$ pyenv versions
system
* 3.11.0 (set by /Users/iamjjintta/.pyenv/version)
3.10.8
나 같은 경우, pyenv versions
명령어를 통해 확인하면 위의 결과가 출력된다.
현재 global
로 적용된 버전은 3.11.0
이다.
global
과 local
, 그리고 shell
로 관리하기
global
: 적용된 기본 Python 버전local
: 특정 디렉터리 별로 관리되는 Python 버전shell
: 터미널에서 실행되는 Python 버전
global
로 Python 버전 설정하기
pyenv global <적용할_버전>
명령어를 통해 global
버전을 설정할 수 있다.
$ pyenv global 3.11.0
local
로 특정 디렉터리의 Python 버전 설정하기
pyenv local <적용할_버전>
명령어를 통해 특정 디렉터리의 Python 버전을 명시할 수 있다.
본 문서에서는 테스트를 위해 임의로 pyenv_test
라는 디렉터리를 생성한 후,
해당 디렉터리에 적용할 Python 버전을 3.10.8
로 적용하였다:
$ mkdir pyenv_test
$ cd pyenv_test
$ pyenv local 3.10.8
shell
로 터미널에서의 Python 버전 설정하기
pyenv shell <적용할_버전>
명령어로 터미널에서 Python을 실행하는 경우에만 지정한 버전으로 실행시킬 수 있다.
$ pyenv shell 3.13.1
마치며
사용법이 굉장히 단순하고 쉬워서 사용하기 좋고,
복잡하고 Learning Curve가 발생하는 다른 방법들보다 훨씬 더 깔끔해서 만족스러웠다.
'찐따의 프로그래밍 독학 > 찐따의 파이썬 독학' 카테고리의 다른 글
찐따의 파이썬 독학 - pyenv virtualenv로 가상 환경 사용 하기 (1) | 2025.03.07 |
---|---|
찐따의 파이썬 독학 - 흔한 찐따의 논문 검색엔진(Journal Search-Engine) 개발 및 테스트 (0) | 2022.09.04 |
찐따의 파이썬 독학 - 흔한 찐따의 양자 시뮬레이터(Quantum Simulator) 개발 및 테스트 (0) | 2022.09.03 |
찐따의 파이썬 독학 - Astropy를 활용한 천문학 데이터 FITS 영상 처리 (1) | 2022.07.29 |
찐따의 파이썬 독학 - 양자역학의 가설을 기반으로 구현한 흔한 찐따의 큐비트(Qubit) 수준 파이썬 양자역학 라이브러리 (0) | 2022.07.07 |