2016-07-28 1 views
2

명령 줄 스크립트와 함께 제공되는 Python 응용 프로그램이 있습니다. setuptools "진입 점"기능을 통해 스크립트를 노출합니다. 사용자가 스크립트를 실행할 때마다 환경이 패키지의 requirements.txt과 일치하도록하고 싶습니다. 즉, 환경에는 버전 지정자와 일치하는 각 종속성 패키지의 버전이 requirements.txt에 있어야합니다.Python : 런타임시 requirements.txt에 따라 PYTHONPATH를 설정하십시오.

나는이 거기에 requirements.txt를 설치, 내 사용자가 가상 ​​환경을 생성하여 venv/virtualenv을 달성 할 수 있다는 것을 알고, 그들이 스크립트를 실행 할 때마다 가상 환경 있음을 활성화합니다. 사용자에게 직접 virtualenv을 호출하는 부담을 가하고 싶지 않습니다. Ruby의 bundlerbundler/setup을 제공하여이 문제를 해결합니다.로드되면 Gemfile (아날로그는 requirements.txt)의 내용을 반영하도록 Ruby의 $LOAD_PATH을 수정합니다. 따라서 런타임 환경을 투명하게 제어하기 위해 스크립트 상단에 배치 할 수 있습니다. 파이썬에는 이에 상응하는 것이 있습니까? 즉, 사용자에게 추가적인 복잡함을주지 않으면 서 실행 시간에 환경을 requirements.txt에 따라 설정하는 방법은 무엇입니까?

+0

: 명령 행 스크립트를 실행하고 있기 때문에, 파일을 읽고하지 왜 그에 보이는 것, 장 - FrançoisFabre OK @'setx PYTHONPATH' –

+0

를 사용하지만, 나는 상호을 기대하고있다 플랫폼 솔루션. –

+0

[의존성을 포함하여 Python 프로젝트를 작성하는 방법]의 가능한 중복? (http://stackoverflow.com/questions/37606773/how-to-build-python-project-including-dependencies) –

답변

1

파이썬에는 동일한 기능이 있습니까? 즉, 사용자에게 추가적인 복잡성을 부과하지 않고 requirements.txt에 따라 런타임시 환경을 설정하는 방법은 무엇입니까?

예, 둘 이상입니다.

하나는 pex

PEX는 이 virtualenvs의 정신에서 실행 파이썬 환경입니다 (파이썬 실행) 파일을 .pex 생성하기위한 라이브러리입니다.

다른 하나는 Platter입니다 :

플래터 유닉스 서버에 배포를 단순화 파이썬위한 도구입니다. 서버에 을 컴파일하거나 다운로드하지 않고 설치할 수있는 패키지를 만드는 데는 pip, virtualenv 및 wheel 주변의 얇은 래퍼가 사용되고 을 지원합니다.

창에
+0

정말 고마워. 'pex'는이 문제에 대한 완벽한 해결책입니다. –

1

파이썬 프로그램이 가져 오기 전에 자체 의존성을 설치할 수없는 이유는 모르겠지만 파이썬 커뮤니티에서는 들리지 않습니다.

예를 들어 here에서 설명한 것처럼 응용 프로그램을 독립 실행 형 실행 파일로 만드는 옵션을 살펴 보겠습니다.

+0

Thanks Markus. 내가 명확히 해두 자면 : 나는 의존성을 설치할 때 스크립트를 설치할 필요가 없다. 패키지를 다운로드 한 후 사용자가 한 번만'pip install --requirements.txt'를하도록하는 것이 좋습니다. 이 문제는 미래의 안정성입니다. 앱은 특정 버전의 특정 패키지를 사용합니다.설치 후 사용자가 패키지를 업데이트하더라도 해당 특정 버전의 환경에서 실행 파일이 무기한 실행되는지 확인해야합니다. 솔루션은 크로스 플랫폼 (Windows, Mac, Linux)이어야합니다. 나는'py2exe'를 들여다 볼 것이지만 좀 더 간단한 해결책을 기대하고 있습니다. –

+0

[certbot] (https://github.com/certbot/certbot) (née Letsencrypt)는 실행시 virtualenv에 자체 종속성을 설치하지만 기술적으로는 설치를 수행하는 셸 스크립트를 실행하고 실제 프로그램을 호출합니다 . – jwodder

관련 문제