2014-04-24 2 views
0

서버가 외부 시스템에 접속하지 못하게하는 회사 내에서 많은 수의 Python 종속성이있는 제품으로 작업하고 있습니다. 이 규칙을 우회하려는 시도는 가혹하게 판단됩니다.기업 방화벽 뒤에서 pypi 대신 파일 시스템 디렉토리를 사용 하시겠습니까?

응용 프로그램은 배치 스크립트 (32 비트 창)를 통해 virtualenv에 배포됩니다. 서버가 외부 세계에 연결하는 것이 불가능하기 때문에 내 유일한 해결책은 스크립트에게의 easy_install을 각각 가지고있다 -이 배치 스크립트는 (이상적) 이상

# Precondition: Source code has been checked-out into myprog/src 
cd myprog/src 
setup.py install # <-- fails because of dependencies 
myprog.exe 

문제는 의존성 관리와 함께 제공 아무것도하지 않고해야 설정이 시작되기 전에 의존성이 같은 : 내가하고 싶은 무엇

cd myproc/deps/windows32 
easy_install foo-1.2.3.egg 
easy_install bar-2.3.4.egg 
easy_install baz-3.4.5.egg <-- works but is annoying/wrong 
cd ../../myprog/src 
setup.py install 
myprog.exe 

는 setup.py 스크립트가에서 종속성을의 가져올 위치를 알 수 있도록 그것을 만들 것입니다. 이상적으로 이것은 명령 행 인자 나 환경 변수로 설정되어야합니다. 그런 식으로 의존성 위치를 프로젝트에 하드 코딩하지 않을 것입니다.

모든 계란이 '배포판'디렉토리의 일부가되는 것이 이상적입니다. 네트워크 드라이브에 있거나 웹 서버에서 공유하거나 가능하면 각 로컬 폴더에 배포 할 수 있습니다. 서버.

이 작업을 수행 할 수 있습니까? --no-index--find-links :

+0

자신 만의 부분 미러를 설정할 수 있습니다. [PyPI 소스 코드] (https://bitbucket.org/pypa/pypi)를 사용할 수 있습니다. 내가 실제로 시도한 적이 없기 때문에 나는 대답으로 이것을 게시하지 않을 것이다. –

답변

2

나는 당신을 위해 무엇을 찾고있는 것은 pip 이러한 옵션을 생각

--no-index 
--find-links /my/local/archives 
--find-links http://some.archives.com/archives 

문서가 here이다.

+0

그건 정확히 내가 원하는 건 아니에요 : 나는 pip 유틸리티를 실행하지 않고있어, 주 응용 프로그램이 소스로 배포되었으므로 setup.py를 실행하고 있습니다. 어떤 제안? –

+1

그러나 앱에'setup.py' 스크립트가 있다면'setup.py install' 대신'pip install --ignore-installed .'를 통해 설치할 수 있습니다. 이것을 확인할 수 있습니까? 그것이 작동하면,'pip'는 당신의 app의 모든 나열된 의존성을 존중할 것입니다. 또는,'requirements.txt' 파일을 생성하고 거기에 모든 요구 사항을 넣고 앱을 설치하기 전에'pip install -r requirements.txt --no-index --find-links <경로와 달걀 경로>'명령을 실행할 수 있습니다 . – Palasaty

관련 문제