pyenv와 venv로 python 버전과 pip 패키지 관리하기 (2/2)
앞의 글(2021.05.29 - [실습] - pyenv와 venv로 python 버전과 pip 패키지 관리하기 (1/2))에서 왜 pyenv와 venv가 유용한지 알아 보았습니다. 여기서는 ubuntu 환경에 pyenv와 venv를 설치하고 간단한 사용법을 살펴 보려고 합니다.
실행환경: Ubuntu 18.04.5 LTS
사용법을 알아보기 위해 pyenv로 python 3.7.10을 설치하고, venv로 test란 가상 환경을 생성해 봅시다.
먼저, 시스템에 어떤 버전의 python이 설치되어 있는지 확인해 봅시다.
Pyenv 설치
/usr/bin/python3 위치에 버전 3.6.9이 설치되어 있는 것을 볼 수 있습니다. 우리는 python 3.7.10이 필요하니 pyenv를 통해 3.7.10을 설치해 봅시다. 먼저 pyenv는 아래 명령어로 설치할 수 있습니다.
$ curl https://pyenv.run | bash
이미 설치되어 있다면, $ pyenv update 로 업데이트 할 수 있습니다.
설치가 완료되면, pyenv의 경로가 $PATH에 추가되도록 ~/.profile 아래의 줄을 추가합니다. 위치는 ~/.bashrc를 로드하는 위치의 전에 오도록 합니다.
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
그리고 ~/.bashrc의 마지막에 아래처럼 추가합니다.
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
이제 다시 쉘을 실행시키고 $ pyenv 명령어로 pyenv가 실행이 되는지 확인해 봅니다. 이제 python 3.7.10을 설치해 봅시다.
Pyenv: Python 설치
먼저, python을 제대로 컴파일 할 수 있도록 아래 의존 모듈들을 설치합니다. 운영 체제별로 자세한 내용은 여기에서 확인 가능합니다.
$ sudo apt-get update
$ sudo apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
이제 install 명령어로 python 3.7.10을 설치합니다.
$ pyenv install 3.7.10
설치가 완료되면 versions 명령어로 설치된 버전들을 확인할 수 있습니다.
$ pyenv versions
system에 기본 설치된 python도 확인 할 수 있고, 방금 설치한 3.7.10도 같이 볼 수 있습니다. python을 실행시키거나, $ python --version 으로 python이 정말 3.7.10인지 확인할 수 있습니다. Pyenv의 디테일을 알고 싶으신 분은 $ which python으로 어디에 python이 설정되어 있는지 확인해 보세요.
이제 install 명령어로 다른 버전의 python을 쉽게 설치할 수 있습니다. 설치할 수 있는 다른 버전들은 --list 옵션으로 확인 할 수 있습니다. $ pyenv install --list
이제 global 명령어로 설치된 버전을 선택해서 사용할 수 있습니다. 혹은 local 명령어로 프로젝트 별로 선택되도록 설정할 수도 있습니다. 프로젝트 별로는 venv를 통한 가상환경을 이용할 것이기 때문에 global 명령어로 충분합니다.
$ pyenv global 3.7.10
Venv: 가상 환경 만들기
이제 test 가상환경을 만들어 봅시다. 가상 환경을 만드는 것은 매우 쉽습니다. 아래처럼 ~/venv/test 위치에 생성해보겠습니다.
$ python -m venv ~/venv/test
생성이 되면 가상환경을 아래처럼 활성화 시켜 사용할 수 있습니다.
$ source ~/venv/test/bin/activate
$ which python 명령어로 가상 환경에 위치한 python이 실행되는 것을 확인할 수 있습니다. 그리고 $ pip list 로 기본 package외에 다른 설치된 package가 없는 것을 볼 수 있습니다. python 버전은 가상 환경을 생성한 python과 같은 버전인 것을 볼 수 있네요.
가상환경을 비활성화 시키려면 deactivate 명령어를 이용합니다. 여러 개의 가상환경을 생성하고 가상환경을 활성화, 비활성화 시키면서 여러 프로젝트에서 원하는 python 버전과 package들을 사용할 수 있습니다.
$ deactivate
Pyenv에서 다른 버전의 python을 지정하고 다시 test 가상환경을 활성화 시켰도 그대로 python 3.7.10 버전을 확인할 수 있습니다.
더 이상 필요없는 가상환경은 간단히 폴더를 삭제해 주시면 됩니다.
유용한 링크
- Pyenv, https://github.com/pyenv/pyenv
- Pyenv-installer, https://github.com/pyenv/pyenv-installer
- Venv, https://docs.python.org/ko/3/tutorial/venv.html