Python/Advanced

[Python] 가상환경, 패키지 관리 모듈 정리 (pyenv, pipenv, poetry, venv)

yubi5050 2023. 2. 11. 17:50

pyenv

👉 pyenv란?

  • 동일 OS 내에서 Python을 여러 버전 별로 관리할 수 있는 도구

 

👉 pyenv 특징

  • 공식문서에 따르면 window는 지원을 하지 않음 (Linux나 Mac)
  • virtualenv를 통해 가상환경 생성 및 관리 (같이 설치됨)
  • Github : https://github.com/pyenv/pyenv
  • ex) 현재 로컬에 Python 3.10 버전을 사용중인데, 3.6 버전으로 프로젝트 진행 필요
  • ex) 특정 파이썬 버전을 pyenv로 설치하고 삭제가능

 

👉 pyenv 설치 방법

 

👉 pyenv 주요 명령어

# pyenv 설치 가능한 python 버전 확인
$ pyenv install --list


# pyenv로 파이썬 버전 설치 및 삭제
$ pyenv install [python version] # ex) pyenv install 3.6.2
$ pyenv uninstall [python version] # ex) pyenv uninstall 3.6.2


# pyenv로 설치한 파이썬 버전들 확인
$ pyenv versions 


# pyenv로 설치한 파이썬 버전의 가상환경 생성
$ pyenv virtualenv [python version] [environment name] # ex) pyenv virtualenv myvenv


# pyenv로 생성한 가상환경 실행/종료
$ pyenv activate [environment name]
$ pyenv deactivate
$ pyenv shell myvenv

 

 

pipenv

👉 pipenv 란?

  • 가상환경을 통해 프로젝트 별로 패키지를 관리 할 수 있는 모듈 

 

👉 pipenv 특징?

  • 파이썬에서 공식적으로 권장하는 가상환경 모듈 (python 3.7 이상)
  • pipfile.lock 파일 기반으로 안전한 패키지 버전 관리 가능 (.lock 파일의 자동 Hash)
  • virtualenv 기반의 가상환경 생성
  • pip 명령어를 통한 패키지 설치시 자동으로 pipfile 등에 변경사항 반영됨
  • venv 모듈의 requirements.txt 에서 상세 버전 명시X, 명시 간 불필요 시간 소요 등의 문제점이 등장 배경
  • dependency graph 시각화 기능 (pipenv graph) 제공
  • pipfile 중 [packages], [dev-packages]로 실제 개발용/배포 구분 가능
  • Github : https://github.com/pypa/pipenv
  • ex) 로컬에 python 3.7이 설치 되어 있고 pipenv를 통해 가상환경 생성

 

👉 pipenv 설치 방법 및 동작

  • 사전에 Python이 로컬에 설치 되어 있어야 함
# pipenv 패키지 설치
$ pip install pipenv


# pipenv로 특정 python 버전의 가상환경 생성/삭제
$ pipenv --python 3.7
$ pipenv --rm


# pipenv 가상환경 폴더를 만들 폴더로 이동하여 활성화/비활성화
$ pipenv shell # Pipfile 이 만들어짐 (활성화
$ exit # 가상환경 비활성화


# pipenv 가상환경에서 패키지 설치
$ pipenv install <패키지 이름> # 자동으로 Pipfile에 내역이 등록됨

 

venv

👉 venv 란?

  • 가상환경을 통해 프로젝트 별로 패키지를 관리 할 수 있는 모듈 

 

👉 venv 특징

  • 파이썬(pip)에 내장되어 있는 가상환경 모듈 (3.5 이상)
  • 패키지 관리는 일반적으로 requirements.txt로 한다.

 

👉 venv 생성 및 실행

# 가상환경 생성
$ python3 -m venv <가상환경 이름>

# 가상 환경 실행/종료
$ (공통) cd <가상환경 이름>
$ (window) .\Scripts\activate.bat
$ (linux, mac) source /bin/activate.bat
$ deactivate

 

poetry

👉 poetry란?

Python 패키지들 간의 종속성 및 의존성 관리를 위한 도구 모듈

 

👉 poetry 특징

  • .toml, .lock 파일을 생성해 의존성을 관리
  • .toml : 프로젝트 의존성들 간의 충돌 해결을 위해 의존성에 대한 메타 데이터를 저장
  • .lock : 설치된 패키지들을 hash로 관리
  • 비교적 최근 등장한 모듈로, pip와는 사용하지 않음
  • window, linux, mac 모두 가능
  • Github : https://github.com/python-poetry/poetry

 

👉 poetry 설치 및 실행

 

 

기타

👉 pyvenv

python 3.3, 3.4에서 많이 사용하던 가상 도구로, 3.6 이후부터 사용 X 권장

 

👉 conda

데이터 사이언스, 머신러닝 분야의  Python 기반의 라이브러리가 내재된 가상환경 모듈 conda는 충돌이 잦고, path도 기존의 python과 다르게 관리되기 때문에, 비추천

 

참고 문헌