2017-11-29 2 views
3

PyPI에 게시 된 Python 라이브러리가 있습니다. 새 버전의 라이브러리를로드하기 전에 새 버전을 사용하도록 샘플 응용 프로그램을 업그레이드하여 테스트하려고합니다. 이 작업을 수행하는 pip 대상 디렉토리에 로컬 패키지 설치

suggested method

-e ( --editable) 플래그를 사용하여 "개발 모드"에서 작동하는 것입니다

$ pip install -e <my package root> 

그리고 이것은 참으로 나의 지구 환경에 패키지를 설치 않습니다.

그러나 내 샘플 프로그램은 Google App Engine 용으로 작성되었으며 응용 프로그램 별 폴더 (내 경우에는 ./lib)에 all third-party libraries be copied이 필요합니다. 나는 일반적으로 핍하는 -t (--target) 옵션을 사용하여 여기에 패키지를 설치 :

$ pip install -t lib/ <package> 

그러나,이 -e-t 옵션 arenotcompatible, 내 시도가 지정된 내 지역, 게시되지 않은 라이브러리를 설치하는 것으로 보인다 두 플래그를 함께 사용하여 대상 폴더가 실패합니다.

게시하기 전에 내 라이브러리 패키지를 사용자 지정 디렉토리에 설치하여 테스트 할 수 있습니까? 제프리 Godwyll의 Google App Engine Vendoring Done Right에서 지침을 적응

답변

1

은 나를 위해 일한 :

cd ~/app-engine-project-directory 
mkdir lib 
ln -s env/lib/python2.7/site-packages lib 
pip install -e ../my-local-dependency 

(물론, 파이썬 버전에 사용중인 따라 세 번째 줄을 변경해야 할 수도 있습니다.)

+0

예,이은을 관리 할 수있는 좋은 방법입니다 의존성. 나는'mkdir lib' 줄이 잘못되었다고 생각합니다. 디렉토리가 이미 존재한다면,'ln -s'는'lib/site-packages -> env/lib/python2.7/site-packages'를 링크 할 것입니다. –

+0

불행하게도,'pip install -e'는 site-packages 폴더에 "egg-info"파일 (가난한 남자의 심볼릭 링크)을 만들고, GAE'dev_appserver.py' 스크립트는 그것을 따라갈 수 없습니다. 어쨌든 응용 프로그램은 dev_appserver.py를 사용하여 실행할 때 로컬 종속성을 볼 수 없습니다. –

+0

이 방법은 권장하지 않습니다. ** 모든 ** 로컬 설치 패키지를 앱과 함께 업로드합니다. 즉, 앱 파일 할당량을 초과하거나 샌드 박스와 충돌 할 수있는 라이브러리를 업로드 할 수 있으며, 배포 할 때 앱에 애매한 문제가 발생합니다. –

1

새 패키지의 1 시간 테스트를 위해 로컬 파일 시스템에서 직접 설치하는 것이 가장 좋은 것 같다 :

$ cd /my/sample/application 
$ pip install -t lib /my/local/package 

이 설치되지 않습니다 일 (내가 pip install --editable을 사용한다면) 로컬 패키지에 추가 변경 사항을 적용 할 때 동기화됩니다. 그러나이 사용 사례에는 해당 패키지없이 살 수 있습니다.

pip install -e은 GAE의 dev_appserver.py 스크립트가 이해/통과하지 못하는 "egg-info"파일을 사용하기 때문에 @pbaranay's answer을 사용할 수 없습니다. 하지만 virtualenv를 만들고 lib에 기호 링크를 심볼릭 링크 (lib에 패키지를 직접 설치하는 것보다는 -t)하는 것이 좋습니다.

0

당신은 당신의 지역 파이썬 설치에 -e 패키지와 함께 설치하거나 당신이 원하는 어디든지, 다음 앱의 lib 디렉토리에 특정 로컬 패키지 디렉토리를 심볼릭 링크 수 :

ln -s /my/local/package /my/sample/application/lib/ 
+0

'-e'를 사용하면'site-packages' 디렉토리에 "egg-info"파일 만 생성되는 것처럼 보입니다. 실제로 전체 패키지 (실제로는)를 설치하지는 않습니다. 그래서, 내가 심볼릭 링크 할 수있는 패키지가없는 것처럼 보입니다. –

+0

그러면 의도 한'-e' 사용법을 잘못 이해 한 것 같습니다. 당신은 * GAE와 같은 라이브러리를 사용할 수 없을 수도 있습니다 (하지만 GAE에서 계란을 사용하려 한 적이 확실치 않습니다). –

관련 문제