파이썬 프로젝트 패키징 도구
프로젝트에 대한 virtualenv 자동 생성 및 관리
패키지 설치/제거 시 Pipfile에 패키지 추가/제거
빌드 생성에 사용되는 Pipfile.lock 생성
애플리케이션 사용자와 개발자에게 작업 환경을 쉽게 설정할 수 있는 방법 제공
기존에 anaconda 기반의 파이썬 가상환경을 익숙하게 사용하였으나 업무, 프로젝트로 인해 가상환경을 구분할 때 걸리적거리는 부분이 있었다
등등이 있던 것 같고 2번과 같은 문제 경험이 있어 항상 pip install로 설치하다 보니 굳이 conda를 써야하나? 라는 생각도 듬
그래서 다른 방법들을 찾아봤고 써보면 괜찮겠다 싶은게 있어 정리해놓는다
다른 라이브러리 및 애플리케이션에 재사용 가능한 기능 제공
하위 종속성을 가지며 다른 라이브러리와 함께 작업해야 함
서로 다른 라이브러리의 하위 종속성에서 버전 충돌 방지를 위해 종속성 버전을 고정하면 안됨
일부 기능에 의존하는 경우 버전의 상한 또는 하한을 지정할 수 있음
setup.py에서 라이브러리 종속성은 install_dependents로 지정됨
궁극적으로 라이브러리는 일부 애플리케이션에서 사용되어야 함
애플리케이션은 다른 프로젝트에 의존하지 않음
특정 환경에서 배치되며 그 환경에서만 종속성이 구체화되어야 함
이를 더 쉽게 만드는 것이 pipenv의 주 목표
$ pip install --user pipenv
pip, python -m venv or virtualenv로 직접 호출하고 Makefile의 사용 대체
pipenv install, uninstall(pip처럼 사용), lock
$ pipenv install --python 3.10
→ 해당 프로젝트에서 처음 실행 시 가상환경 생성, Pipfile, Pipfile.lock 생성
$ pipenv --venv # 가상 환경 위치 확인
$ pipenv --py # 가상 환경 내 파이썰 인터프리 위치 확인
$ pipenv run python # 파이썬 인터프리터 실행
$ pipenv shell # 가상 환경 활성화
$ exit # 가상환경 빠져나가기
$ pipenv --rm # 가상 환경 제거
$ pipenv install ** --dev # 개발용 패키지 설치 (dev dependency)
$ pipenv install # Pipfile, Pipfile.lock의 패키지 모두 설치
$ pipenv check # 보안 취약점이 있는 패키지 확인
Pipfile은 대략적인 설치 패키지
Pipfile.lock는 해당 패키지와 의존 패키지들의 정확한 버전 기록
패키지 설치 시
$ pipenv install 패키지명 # 으로 설치해야 Pipfile에 기록됨
$ pipenv lock # 패키지의 이름, 정확한 버전 기록
$ pipenv install # 협업하는 다른 사람은 해당 명령어로 새로운 가상환경 만들고 필요한 패키지 설치
개발 환경 관리
$ pipenv install --dev 패키지명 # 개발 환경에서만 사용되는 패키지 설치
$ pipenv install # --dev를 붙인 패키지는 이 명령어로 설치되지 않음
$ pipenv install --dev # 해당 옵션을 붙이면 개발 패키지를 포함한 모든 dependencies 설치
Pipenv: Python Dev Workflow for Humans — pipenv 2023.2.5.dev0 documentation