/ PROGRAMMING, PYTHON

Python 가상 환경 깔끔한 관리법

파이썬에서 가상 환경 관리하는 방법은 다양하다. 그 중 개인적으로 선호하고 지금 사용 중인 방법을 간단하게 정리했다.

파이썬 가상 환경이란?

파이썬을 이용하다 보면 프로젝트마다 요구하는 파이썬 버전 및 패키지의 버전이 다른 것을 알 수 있다. 프로젝트마다 서로 다른 파이썬 및 패키지 버전을 사용할 수 있도록 도와주는 것, 다시 말해 프로젝트마다 파이썬, 패키지 버전이 종속된 ‘환경’이 파이썬 가상 환경이다.

가상 환경을 제공하는 도구로 Anaconda가 유명하나, 최근 유료화 소식이 떴고 꽤 무거우며 사용법이 비교적 불편해서 나는 안 쓴다.

파이썬 버전 관리: pyenv

Windows에서는 pyenv-win을 설치하면 된다.

기존 시스템에 설치된 파이썬 사용하기

pyenv global system

위 명령어로 global 파이썬 버전을 시스템으로 설정하면, 기존 버전을 사용하는 것도 가능하다.

pyenv Github repo

여러 개의 파이썬 버전을 설치하고 간편하게 명령어로 버전을 바꿔 가며 사용할 수 있고, 프로젝트 폴더별로 따로 파이썬 버전을 지정할 수도 있는 편리한 툴이다.

버전별로 완전히 독립적인 파이썬을 여러 개 설치하는 것과 같아서, 설치한 버전별로 자연스럽게 패키지도 따로 관리된다.

pyenv는 공식적으로는 Windows를 지원하지 않으나, pyenv-win이라는 Windows용으로 만들어진 버전을 설치하여 사용할 수도 있다. 나는 Windows에서도 이걸로 pyenv를 사용하고 있다.

다만 pyenv-win은 공식 pyenv와 달리 이미 기존에 시스템에 설치된 파이썬을 사용하지 못 하고 오직 pyenv로 설치한 버전만 선택 가능하다 소소한 단점이 있다.

참고로 Ruby 용으로 나온 rbenv도 있는데 pyenv와 사용법이 거의 동일하다.

pyenv 설치 방법

  • 공식 pyenv
curl https://pyenv.run | bash
  • pyenv-win
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

pyenv 사용법

매우 단순하고 간편하다.

먼저 pyenv install -l 로 설치 가능한 버전을 확인한다.

pyenv install <버전>

로 원하는 버전을 설치하고,

pyenv global <설치된 버전>

로 시스템 전체에서 사용할 Python 버전을 선택한다.

이때 버전 대신 system을 입력하면 원래 시스템에 설치되어 있던 Python을 사용할 수 있다. 단 pyenv-win에서는 지원하지 않는다.

pyenv local <설치된 버전>

프로젝트 폴더 최상단에서 이 명령어를 입력하면 해당 프로젝트에서만 사용할 Python 버전을 선택할 수 있다.

이때 입력한 버전 정보은 해당 경로에 생성되는 .python-version 파일에 저장된다.

업데이트 방법

  • 공식 pyenv
pyenv update
  • pyenv-win
&"${env:PYENV_HOME}\install-pyenv-win.ps1"

패키지 버전 관리: pipenv

Python에서 공식적으로 권장하는 방법이라고 한다. pipenv를 써서도 파이썬 버전을 선택하여 사용할 수 있기는 하다.

근데 난 pipenv 만 사용하려고 했더니 문제를 겪었다. 파이썬 3.11에서 설치한 pipenv로 파이썬 3.6 환경을 만들려고 시도했더니 오류가 났던 것이다. 그래서 난 파이썬 버전은 pyenv로 관리하고 pipenv로는 패키지 버전을 관리하는 방법을 택했다.

pipenv 설치 방법

pip install pipenv --user

pipenv 사용법

pip로 설치 가능한 패키지를 설치할 때 pip 대신 pipenv를 설치하면 된다.

pipenv install <package>

설치된 패키지는 Pipfile이라는 파일에 저장된다.

Pipfile에 적힌 패키지들을 한 번에 설치하려면,

pipenv install

를 입력하면 된다.

pipenv 환경에서 Python 프로그램을 실행하려면 pipenv run을 사용한다.

pipenv run python main.py

또는 pipenv shell로 아예 상시 pipenv 환경인 쉘을 spawn하여 사용할 수도 있다.

현재 설치된 패키지들의 버전을 저장하고 싶다면,

pipenv lock

를 입력하여 Pipfile.lock을 생성한다. 이렇게 하면 requirements.txt와 유사하게 고정된 버전을 기록할 수 있다.

pipenv sync

을 입력하면 Pipfile.lock에 적힌 버전들을 한 번에 설치할 수 있다.

참조 링크

Python에서 requirements.txt 생성