파이썬 가상 환경, 패키지 매니저 정리(venv, poetry, pipvenv...)

파이썬 가상 환경, 패키지 매니저 정리(venv, poetry, pipvenv...)

Category
Published
August 21, 2022
Last updated
Last updated September 7, 2024
파이썬의 다양한 가상 환경, 패키지 매니저를 정리하였습니다.
추천하는 것은 간단하게 사용한다면, pip + venv를 사용하는 것을 추천하고 아니면 poetry나 pipenv의 사용을 추천합니다.

pip

패키지 매니저
파이썬에서 기본적으로 제공하는 패키지 매니저.
pip freeze > requirements.txt # 현재 설치된 패키지 목록을 저장한다 pip install -r requirements.txt # 패키지 목록에 있는 패키지를 설치한다
위와 같은 방식으로 패키지를 관리할 수 있다.
  • 패키지 의존성을 확인하기 어렵다

venv

가상 환경
파이썬 3.4부터 내장되어 있는 가상 환경 모듈이다
# 가상환경 생성(가상환경 이름은 venv를 추천) python3 -m venv ENV_NAME # 가상환경 활성화(윈도우) ENv_NAME\Scripts\activate.bat # 프로젝트 폴더에서 실행 # 가상환경 비활성화 deactivate
venv 가상 환경 내에서 위에서 소개한 pip을 이용해 패키지를 관리할 수 있다. 해당 가상 환경에서 설치한 패키지는 해당 가상 환경에서만 존재한다.
가상 환경을 삭제하려면 venv폴더를 그냥 삭제하면 된다.

virtualenv

가상 환경
virtualenv는 파이썬 2부터 내려오는 라이브러리로, venv가 이 virtualenv의 경량화 버전이다. 고로 따로 설치해야 한다는 점을 제외하면 venv보다 virtualenv가 선호된다.
# virtualenv 설치 pip install virtualenv # 가상환경 생성(일반, 파이썬 버전 지정) virtualenv ENV_NAME virtualenv ENV_NAME --python=3.10 # 가상환경 실행(윈도우) ENV_NAME\Scripts\activate.bat # 프로젝트 폴더에서 실행 # 가상환경 종료 deactivate

pyenv

파이썬 버전 관리
pyenv는 파이썬 버전 관리를 도와줍니다.
# pyenv 설치(mac os) brew install pyenv # pyenv에서 python 특정 버전 설치 pyenv install 3.10.4 # 파이썬 글로벌 버전 설정하기 pyenv global 3.10.4

pyenv-virtualenv

파이썬 버전 관리, 가상 환경
pyenv-virtualenv는 pyenv의 플러그인이다. 파이썬 버전을 쉽게 변경할 수 있는 것이 특징이다.
# pyenv-virtualenv 설치(pyenv root 설정해주기) git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv # pyenv-virtualenv 설치(mac os) brew install pyenv-virtualenv # 가상환경 생성 pyenv virtualenv 2.7.10 ENV_NAME # 현재 pyenv 버전으로 가상환경 생성 pyenv virtualenv ENV_NAME # 가상환경 실행 pyenv activate ENV_NAME # 가상환경 종료 pyenv deactivate # 가상환경 삭제 pyenv uninstall ENV_NAME

pipenv

가상 환경, 패키지 매니저
pipenv는 Pipfile, Pipfile.lock 파일을 바탕으로 패키지 관리를 한다. 가상 환경 생성 시 설치되어 있는 것이 아닌 다른 버전의 파이썬을 사용하려면, pyenv와 같이 사용하면 된다.
# pipenv 설치(윈도우) pip install pipenv # pipenv 설치(데비안) sudo apt install pipenv # 가상환경 생성 pipenv --python 3.9 # 가상환경 실행 pipenv shell # 가상환경 실행(바로 명령어 실행) pipenv run COMMAND # 가상환경 종료 exit # 가상환경 삭제 pipenv --rm # pipfile.lock 기반으로 packages 목록의 패키지 설치 pipenv install # pipfile.lock 기반으로 packages, dev-packages 목록의 패키지 설치 pipenv install --dev # 패키지 설치 pipenv install PACKAGE_NAME # 개발용 패키지 설치(dev-packges에 기록) pipenv install PACKAGE_NAME --dev # lockfile 생성 pipenv lock # 설치한 패키지 의존성 그래프로 확인 pipenv graph # 패키지에 보안 취약성 있는지 확인 pipenv check
pipenv install으로 패키지를 설치하면 자동으로 Pipfile과 Pipfile.lock에 패키지가 추가된다. 이때, Pipfile.lock은 사용자가 수정하는 것이 아닌, pipenv가 자동으로 설치 당시의 버전을 기억하여 나중에도 동일 버전의 패키지를 사용할 수 있게 해주는 파일이므로 따로 수정하지 않아도 됩니다.
pipfile.lock은 다음과 같이 구성된다.
[[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] django = "*" [dev-packages] requests = "*" [requires] python_version = "3.9"
packages에는 배포 시에 사용하는 패키지를 작성하고, dev-packages에서는 개발 환경에서만 사용하는 패키지를 작성한다.

poetry

가상 환경, 패키지 매니저
poetry는 pyproject.toml, poetry.lock 파일을 바탕으로 패키지 관리를 한다.
poetry 사용을 위해서는 파이썬 2.7 또는 3.5+가 필요하다.
# poetry 설치(Windows Powershell) (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py - # poetry 설치(Linux, macOS, Windows (WSL)) curl -sSL https://install.python-poetry.org | python3 - # poetry 설치(pip) pip install --user poetry # 프로젝트 생성 poetry new ENV_NAME # 기존 프로젝트 추가(대화형으로 진행됨) poetry init # 가상환경 실행 poetry shell # 가상환경 실행(바로 명령어 실행) poetry run python SCRIPT.py # 가상환경 종료 exit # 패키지 설치 poetry install # 패키지 추가 poetry add PACKAGE_NAME poetry add PACKAGE_NAME==PACKAGE_VERSION poetry add PACKAGE_NAME1 PACKAGE_NAME2 PACKAGE_NAME3
poetry install 시에 락 파일인 poetry.lock이 없으면 pyproject.toml을 기반으로 패키지를 설치하고 poetry.lock을 생성한다.
pyproject.toml은 다음과 같이 구성되어 있습니다.
[tool.poetry] name = "poetryproject" version = "0.1.0" description = "" authors = ["Your Name <you@example.com>"] [tool.poetry.dependencies] python = "~3.9" Django = "^4.1" requests = "^2.28.1" [tool.poetry.dev-dependencies] [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"

conda

파이썬 배포판(가상 환경, 패키지 매니저)
anaconda는 데이터 과학과 머신러닝 분야에서 사용되는 파이썬 배포판이다. 기본적으로 머신러닝에 중점을 두고 있기 때문에 다른 가상 환경이나 패키지 매니저를 사용하는 것을 추천한다.