티스토리 뷰

개발환경

파이썬 가상환경 구축

jiun_ 2020. 8. 29. 20:29

 Node.js나 자바스크립트로 개발을 해 보셨던 분이라면 nvm, package.json이나 yarn.lock에 대해 알고 계실 겁니다. 노드 버전과 자바스크립트 패키지 의존성을 관리해 주는 역할을 하죠. 그렇다면 파이썬에서는 이들을 어떻게 관리할까요? 이번 포스팅에서는 파이썬 버전과 패키지 관리 툴인 Pyenv와 virtualenv에 대해 알아보겠습니다.

 

이 글에서 설명하는 기본적인 설정 방법은 링크 를 참고하였습니다. 제 글보다 더 이해하기 편하고 MacOS에 대한 설정 과정까지 있으므로 읽어 보시는 것을 추천드립니다.

Pyenv 설치

 Pyenv는 파이썬 버전을 관리해 줍니다. 파이썬 특성상 프로젝트 별로 다른 버전을 사용하는 경우가 많은데, Pyenv를 통한 버전 분리로 이 문제를 해결할 수 있습니다. 일단 Pyenv 설치에 앞서 sudo apt update,sudo apt dist-upgrade를 해 줍니다.

 

update와 upgrade, dist-upgrade의 차이점

update는 사용 가능한 패키지 인덱스 리스트(/ect/apt/soures.list에 저장되어 있습니다)를 업데이트 해 주며, upgrade는 패키지를 새로운 버전으로 패치해 주는 명령어입니다. 이 때 dist 를 옵션으로 주면 의존성 체크를 수행하며 업그레이드를 진행합니다. 패키지의 중요도를 따져 덜 중요한 패키지를 지우고 중요한 패키지 업그레이드를 시도하므로 일부 패키지는 제거되는 경우도 있습니다.

 

업그레이드를 마쳤으면 다음 명령어를 통해 Pyenv를 설치해 주세요. Git이나 curl이 없을 경우 sudo apt install git curl 을 통해 설치해 주세요.

curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

Pyenv 경로 추가

 설치가 완료되면 pyenv load path를 added하지 않았다는 메시지가 뜹니다. ~/.zshrc~/.bashrc 등 쉘 설정 파일 가장 밑에 메시지에 나타나는 문구를 붙여넣어 주세요(메시지에서 시키는 대로만 하시면 되는 작업이니 메시지를 잘 읽어보세요). 참고로 VScode 내장 터미널에서는 메시지에 나타난 쉘 설정 파일 경로를 ctrl과 함께 누르면 바로 해당 파일 편집이 가능합니다.

 

이제 터미널을 껐다 키고, pyenv라고 입력해 보세요. 사용할 수 있는 커맨드 목록이 출력된다면 잘 깔린 겁니다. 더 자세한 내용을 알고 싶으시면 여기를 참고하세요.

Pyenv 필요 패키지 설치

 Pyenv를 이용하기 위해 필요한 패키지를 설치해 줘야 합니다. 목록이 달라졌을 수 있으므로 링크를 확인하며 진행해 주세요.

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git

Pyenv를 이용한 파이썬 설치

 Pyenv 설치가 끝나면 pyenv install -–list 로 설치 가능한 파이썬 버전을 확인할 수 있습니다. 저는 pyenv install 3.8.5 를 통해 3.8.5 버전을 설치했습니다. 3.8.5 대신 원하시는 파이썬 버전을 입력하시면 해당 파이썬을 설치하실 수 있습니다.

 

우리가 설치한 파이썬 버전들은 pyenv versions를 통해 확인할 수 있습니다. 이 명령어를 사용하면 *표시를 통해 무슨 파이썬에서 작업 중인지도 알 수 있는데, 아마 지금은 *표시가 뜨지 않을 것입니다. 적용된 파이썬 버전이 없기 때문입니다. 이후 virtualenv를 통해 가상환경 별로 파이썬 버전을 지정해 줄 건데, 지금은 가상환경이 아닌 전역적으로 사용되는 환경이므로 전역적으로 쓸 파이썬 버전을 지정해 줘야 합니다. 저는 pyenv global 3.8.5 로 3.8.5 버전을 전역으로 사용하도록 했습니다. 다시 pyenv versions을 입력하면 3.8.5 앞에 * 표시가 생긴 것을 확인할 수 있습니다.

 

전역 버전이 3.8.5로 설정되었습니다.

Pyenv-virtualenv로 가상환경 만들기

 pyenv install --list를 했을 때 보셨겠지만, pyenv 는 conda까지 포괄하여 관리해 줍니다. pyenv install miniconda3-4.7.12로 미니콘다를 설치한 후 pyenv virtualenv miniconda3-4.7.12 test 명령어를 입력해 주면 미니콘다 3-4.7.12 버전을 기반으로 test이라는 이름을 가진 가상환경을 만들 수 있습니다. 만약 conda 환경에 쓰일 파이썬 버전을 명시하고 싶으신 경우는 pyenv virtualenv -p 2.7.18 miniconda3-4.7.12 test 와 같이 p 옵션을 주면 됩니다. 만든 test 가상환경은pyenv activate test을 통해 활성화 시킬 수 있으며 이 환경에서는 conda 명령어를 사용하실 수 있습니다.

 

만약 conda initialization 관련 오류가 발생할 경우에는 conda init (쉘 이름) 을 입력해 conda 세팅을 해 주고 터미널을 재시작해 줍니다. base가 되는 conda 환경이 지정되고, 그 후로는 conda 명령어가 작동할 것입니다. 터미널을 킬 때 (base) 가 활성화되는 것을 끄고 싶으면 다음 명령어를 입력하면 됩니다. conda config --set auto_activate_base False

 

 

conda create를 통해 새로운 가상환경을 만드는 것은 추천드리지 않습니다. 이렇게 만들어진 환경은 pyenv로 관리하기 힘듭니다. pyenv만을 이용해 conda 환경을 만들고 관리하시길 바랍니다. 참고로 활성화된 conda 환경은 conda env list 로 확인할 수 있습니다.

 

이제 가상환경을 이용한 패키지 관리를 통해 프로젝트별 패키지 구성과 의존성 또한 해결할 수 있게 되었습니다. 문제가 생긴 가상환경은 pyenv uninstall (가상환경)을 통해 쉽게 제거할 수 있고, 설치된 패키지들은 requirements.txt를 통해 다른 개발 환경으로 쉽게 이전이 가능합니다. 하지만 프로젝트를 옮길 때마다 원하는 가상환경을 수동으로 활성화 시켜야 해서 매우 귀찮게 느껴집니다. 이 때는 pyenv local (가상환경) 명령어를 통해 현재 디렉토리에 활성화되어야 하는 가상환경을 지정해 줄 수 있습니다. 이 명령어를 실행하면 python-version 이라는 파일이 생기는데, 열어보면 지정해 준 가상환경 이름이 적혀 있는 것을 볼 수 있습니다.

 

 

.python-version으로 자동으로 활성화되는 버전을 관리할 수 있습니다.

Reference & 읽을거리

 본문에 링크되지 않은 레퍼런스와 더 읽을거리들 입니다.

 

Python 개발 생태계 : pyenv 기본 동작 원리와 파이썬 패키징에 대해 잘 설명되어 있습니다. 읽어 보시는 것을 추천드립니다.

whatisthenext.tistory.com/136 : 처음 가상환경을 구축할 때 참고한 글입니다.

'개발환경' 카테고리의 다른 글

[Terminal] Zsh와 ohmyzsh  (0) 2020.08.29
[Terminal] 윈도우 터미널 설치, 설정  (0) 2020.08.29
[WSL] WSL2 설치, 드라이브 변경  (0) 2020.08.29
[WSL] WSL&VScode 기본 설정  (0) 2020.08.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
아카이브