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 설치는 다음 공식문서를 참고
- https://github.com/pyenv/pyenv#homebrew-in-macos
👉 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 설치 및 실행
- https://python-poetry.org/docs/ // Poetry 설치
- https://python-poetry.org/docs/basic-usage/ // Poetry 실행
기타
👉 pyvenv
python 3.3, 3.4에서 많이 사용하던 가상 도구로, 3.6 이후부터 사용 X 권장
👉 conda
데이터 사이언스, 머신러닝 분야의 Python 기반의 라이브러리가 내재된 가상환경 모듈 conda는 충돌이 잦고, path도 기존의 python과 다르게 관리되기 때문에, 비추천
참고 문헌
- https://wikidocs.net/10936 // Django 자습문서 - pyenv와 가상환경
- https://eyeballs.tistory.com/571 // pyenv 설치 방법
- https://heytech.tistory.com/320 // pipenv 등장배경, 설치, 패키지 관리 방법
- https://devbull.xyz/python-create-environment/ // 파이썬 가상환경 비교(pipenv, venv, pyenv, conda)
- https://velog.io/@insutance/use-poetry-goodbye-pip // poetry를 사용해 패키지 관리하기 (feat. pip)
'Python > Advanced' 카테고리의 다른 글
[Python] Class 이해 - 언더바 정의, @property, @staticmethod, setter/getter (0) | 2023.07.02 |
---|---|
[Python] Circular Import에 따른 파일 구조 개선 (0) | 2023.05.29 |
[Python 비동기] (3) Library, Framework 특징 비교 (0) | 2023.02.09 |
[Python 비동기] (2) Generator, Async/await 코루틴 코드 비교 (0) | 2023.02.09 |
[Python 비동기] (1) 코루틴, 비동기 관련 용어 이해 (0) | 2023.02.08 |