Pipenv로 Python 프로젝트를 관리하는 방법

Python의 패키지 에코 시스템을 사용하면 간단한 pip install명령 으로 수백만 명의 다른 개발자의 작업을 활용할 수 있습니다 . Python의 가상 환경을 사용하면 프로젝트와 패키지를 서로 격리 할 수 ​​있습니다.

그러나 환경과 패키지를 별도로 저글링하는 것은 다루기 어려울 수 있습니다. 프로젝트에 특정 패키지 요구 사항이 있고 유지 관리 대신 개발에 집중하려는 경우 두 배입니다. 우리에게 필요한 것은 환경과 패키지를 함께 관리하는 방법입니다. 

Pipenv는 Python 가상 환경 및 Python 패키지 관리를 단일 도구로 롤링합니다. Pipenv는 각 프로젝트가 필요한 각 패키지의 올바른 버전을 사용하고 각 패키지가 올바른 종속성을 가지고 있는지 확인합니다.

또한 Pipenv는 함께 이동할 수있는 프로젝트의 종속성 목록을 생성하여 다른 사용자 나 개발자가 동일한 방식으로 동일한 프로젝트를 설정할 수 있도록합니다. 다른 사용자도 Pipenv가 관리하는 프로젝트를 올바르게 설정하려면 Pipenv를 설치해야하지만 다행히 Pipenv를 설치하고 사용하는 것은 쉽습니다. 

Pipenv의 작동 원리

일반적으로 Python 프로젝트를 만들고 패키지에 가상 환경을 사용하는 경우 가상 환경을 직접 만들고 (명령 사용  py -m venv), 여기에 종속성을 설치하고, 종속성을 수동으로 추적해야합니다.

Pipenv는이 모든 것을 반자동으로 수행하는 방법을 제공합니다. Pipenv의 명령 줄 인터페이스를 통해 패키지를 설치할 때 프로젝트의 가상 환경이 생성되고 관리됩니다. 종속성은 추적되고 잠기 며 개발 및 런타임 종속성을 별도로 관리 할 수 ​​있습니다. 기존 구식 requirements.txt파일 에서 마이그레이션 할 수도 있으므로 Pipenv를 잘 사용하기 위해 프로젝트를 분리하고 처음부터 다시 시작할 필요가 없습니다.

다른 Python 프로젝트 관리 도구 (예 : Poetry)와 달리 Pipenv는 프로젝트의 "스캐 폴딩"을 관리하지 않습니다. 즉, Pipenv는 모의 테스트, 문서 스텁 등으로 프로젝트 디렉토리의 내부 구조를 생성하지 않고 주로 패키지 및 환경 관리에 중점을 둡니다. 따라서 올인원 솔루션이 아닌 가상 환경 및 패키지에만 집중하는 도구를 원하는 경우 Pipenv가 좋은 선택이됩니다.

Pipenv 시작하기

Pipenv는 대부분의 다른 Python 패키지와 동일한 방식으로 설치됩니다 pip install --user pipenv.. 이 --user옵션은 Pipenv가 다른 시스템 전체 패키지와 충돌하지 않도록하는 데 권장됩니다. 또한 Pipenv 명령이 올바른 위치로 라우팅되도록 사용자 기본 바이너리 디렉토리 경로를 시스템 경로에 추가해야합니다.

Pipenv를 워크 플로의 일관된 부분으로 만들 계획이라면 기본 Python 설치를 가능한 최소한으로 유지하는 것도 좋습니다. 이 조언은 가상 환경을 사용하는 대부분의 Python 설치에 적용됩니다.

Pipenv로 새 프로젝트 설정

Pipenv로 완전히 새로운 프로젝트를 시작하려면 디렉터리를 만들고 일반적으로 프로젝트에 대해 생성하는 파일로 채 웁니다. 진행하면서 프로젝트를 스캐 폴딩하는 경향이있는 경우 빈 디렉토리로 시작할 수 있습니다.

프로젝트를위한 패키지 설치는 Pipenv와 Pip에서 크게 다르지 않습니다. 사실 구문은 거의 동일합니다. 프로젝트 디렉터리에서 콘솔을 열고 입력 pipenv install 하여 프로젝트 용 패키지를 설치합니다. 패키지가 개발 용임을 지정하려면 -d플래그를 사용하십시오 . pip 구문을 사용 하여 패키지의 특정 버전을 표시 할 수 있습니다 (예 :) black==13.0b1.

Pipenv로 패키지를 설치하면 두 가지 일이 발생합니다. 먼저 Pipenv는이 프로젝트 디렉토리에 대해 가상 환경이 이미 생성되었는지 확인합니다. 그렇다면 Pipenv는 기존 가상 환경에 패키지를 설치합니다. 그렇지 않은 경우 Pipenv는 Pipenv를 실행하는 데 사용 된 것과 동일한 Python 버전을 사용하는 가상 환경을 생성합니다. 가상 환경은 프로젝트 디렉토리 자체에 생성 되지 않습니다 . 사용자 프로필에서 Pipenv가 관리하는 디렉터리에 생성됩니다.

둘째, Pipenv는 요청 된 패키지를 가상 환경에 설치합니다. 설치가 완료되면 Pipenv는 가상 환경에 대한 경로를 포함하여 수행 한 모든 작업에 대해보고합니다.

일반적으로 Pipenv가 생성하는 가상 환경의 경로를 알 필요는 없습니다. 환경을 활성화하려면 프로젝트 디렉토리로 이동하고을 사용  pipenv shell하여 새 셸 세션을 시작하거나을 사용  pipenv run 하여 직접 명령을 실행하십시오. 예를 들어를 사용  pipenv run mypy하여의 명령 줄 도구 버전 mypy( mypy도구가 가상 환경에 설치 되었다고 가정 ) pipenv run python -m 을 실행 하거나 가상 환경에서 사용 가능한 Python 모듈을 실행합니다.

Pipenv 및 잠금 파일

Pipenv로 패키지를 설치 한 후 디렉토리 내부를 들여다 보면 두 개의 파일 PipfilePipfile.lock. 둘 다 Pipenv에 의해 자동 생성되며 프로젝트의 패키지 상태를 설명하므로 직접 편집해서는 안됩니다.

Pipfile둘 중 더 간단합니다. 프로젝트에 필요한 패키지, 설치 위치 (기본값은 PyPI), 모든 것을 실행하는 데 필요한 Python 버전 만 나열됩니다. Pipfile.lock더 복잡합니다. 버전 세부 정보 및 패키지에서 생성 된 SHA-256 해시와 함께 각 패키지를 나열합니다. 해시는 설치된 패키지 가 지정된 버전 번호뿐만 아니라 획득 한 내용 과 정확히 일치하는지 확인하는 데 사용됩니다 .

패키지 관리를 위해 Pipenv를 사용하는 프로젝트에서 작업 할 때 프로젝트 의 버전 제어 저장소에 PipfilePipfile.lock파일을 추가 할 수 있습니다 . 프로젝트의 패키지를 변경하면 해당 파일이 변경되므로 변경 사항을 추적하고 버전을 관리해야합니다.

Pipenv 프로젝트 사용

패키지 관리를 위해 Pipenv를 사용하는 프로젝트의 소스 리포지토리를 다운로드하는 경우에는 리포지토리의 콘텐츠를 디렉토리에 압축 해제하고 실행하기 만하면됩니다 pipenv install(패키지 이름 필요 없음). Pipenv는 프로젝트 의 PipfilePipfile.lock파일을 읽고 가상 환경을 만들고 필요에 따라 모든 종속성을 설치합니다.

마지막으로 Pipenv를 사용하여 현재 requirements.txt파일을 사용하는 프로젝트를 관리 하려면 프로젝트의 디렉토리로 이동하여 pipenv install. Pipenv는이를 감지  requirements.txt(또는 -r플래그를 사용하여 가리킬 수 있음)하고 모든 요구 사항을 Pipfile.