Python 가상 환경 깔끔한 관리법
파이썬에서 가상 환경 관리하는 방법은 다양하다. 그 중 개인적으로 선호하고 지금 사용 중인 방법을 간단하게 정리했다.
파이썬 가상 환경이란?
파이썬을 이용하다 보면 프로젝트마다 요구하는 파이썬 버전 및 패키지의 버전이 다른 것을 알 수 있다. 프로젝트마다 서로 다른 파이썬 및 패키지 버전을 사용할 수 있도록 도와주는 것, 다시 말해 프로젝트마다 파이썬, 패키지 버전이 종속된 ‘환경’이 파이썬 가상 환경이다.
가상 환경을 제공하는 도구로 Anaconda가 유명하나, 최근 유료화 소식이 떴고 꽤 무거우며 사용법이 비교적 불편해서 나는 안 쓴다.
파이썬 버전 관리: pyenv
Windows에서는 pyenv-win
을 설치하면 된다.
기존 시스템에 설치된 파이썬 사용하기
pyenv global system
위 명령어로 global 파이썬 버전을 시스템으로 설정하면, 기존 버전을 사용하는 것도 가능하다.
여러 개의 파이썬 버전을 설치하고 간편하게 명령어로 버전을 바꿔 가며 사용할 수 있고, 프로젝트 폴더별로 따로 파이썬 버전을 지정할 수도 있는 편리한 툴이다.
버전별로 완전히 독립적인 파이썬을 여러 개 설치하는 것과 같아서, 설치한 버전별로 자연스럽게 패키지도 따로 관리된다.
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
에 적힌 버전들을 한 번에 설치할 수 있다.