본문 바로가기

실습

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

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

pyenv global

 

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 버전을 확인할 수 있습니다.

 

더 이상 필요없는 가상환경은 간단히 폴더를 삭제해 주시면 됩니다.

 

 

유용한 링크