2012-09-20 4 views
9

캐시 된 패키지를 사용하여 가상 패키지에 pip 패키지를 설치하는 적절한 방법은 무엇입니까? 나는 --timeout=360--use-mirrors으로 설정을 시도했지만, pypi 성능이 매우 희박하여 일상적으로 멈추거나 연결이 끊어 지므로 배포가 까다로웠다.다운로드 캐시를 사용하여 Virtualenv에 PIP 패키지 설치

pip install --upgrade --timeout=120 --use-mirrors --no-install --download-cache /usr/local/pip/cache -r pip-requirements.txt 

후 설치 중에이 캐시 위치를 지정

그래서, 내 계획은 (그러나이를 설치하지 않음) 예를 들어, 모든 패키지 아카이브를 다운로드에게 사전하기 위해 --download 캐시 옵션을 사용하는 것이 었습니다 VIRTUALENV, 예에 : 핍 nondeterministically 캐시 디렉토리에 다운로드 한 패키지를 저장하는 것 때문에

virtualenv /usr/local/myapp/.env 
. /usr/local/myapp/.env/bin/activate; pip install --no-download --download-cache /usr/local/pip/cache -r pip-requirements.txt 
deactivate 

캐시를 작성, 매우 실망했다. 특히, 캐시에 "Django==1.4.0"을 거부하고 "해당 요구 사항이 이미 충족되었습니다."라고 말하면서 --force-reinstall을 사용해야했습니다.

캐시를 사용하여 설치하는 것이 현재 막혀 있습니다. 위의 명령을 실행하면 오류가 발생합니다.

Could not install requirement Django==1.4.0 (from -r pip-requirements.txt (line 1)) because source folder /usr/local/myapp/.env/build/Django does not exist (perhaps --no-download was used without first running an equivalent install with --no-install?) 
Storing complete log in /home/chris/.pip/pip.log 

이게 무슨 의미입니까?

파일 :

http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2FD%2FDjango%2FDjango-1.4.tar.gz 
http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2FD%2FDjango%2FDjango-1.4.tar.gz.content-type 

확실히 캐시 디렉토리에 존재하고, 나는 --no-install 옵션을 사용했습니다.

내가 뭘 잘못하고 있니?

+0

관련 : 더 좋은 cdn/미러가 있습니까? 앱을 만들지 않고 앱을 가리킬 수 있습니까? – David

+0

"pip 패키지"라는 용어를 잘못 사용했다고 생각합니다. 아마도 PyPI 패키지 또는 Python 패키지를 의미 할 것입니다. – glarrain

답변

18

--download-cache은 설치용이 아닌 다운로드 용 캐시를 지정하는 데만 사용할 수 있습니다. 따라서 pip은 여전히 ​​/usr/local/pip/cache 대신 /usr/local/myapp/.env/build/Django을보고 있습니다. 시도해 보셨습니까

pip install --upgrade --timeout=120 --use-mirrors --no-install --download-cache /usr/local/pip/cache -r pip-requirements.txt 

virtualenv 생성 후? 그게 도움이 될지 궁금해.

PIP_DOWNLOAD_CACHE을 내보내고 --download-cache을 사용하지 않고 작동하는지 확인해보십시오. 여기

내가 작품을 찾을 것입니다 : 실제로 지금

pip install --no-install --use-mirrors --download=/DIRNAME PKGNAME 
pip install --find-links=file:///DIRNAME --no-index --index-url=file:///dev/null PKGNAME 

,, 여기에 내가 위의 모든 대신 사용하는 것이위한 도구이며 더 우아하게 많은 문제의 모든를 해결 그리고 신뢰성있게 : pip2pi David Wolever 저.워드 프로세서

: pip2tgz를 사용하여 패키지 및 패키지의 모든 요구 사항을 반영하기 위해

  1. :

    pip2pi builds a PyPI-compatible package repository from pip requirements

    pip2pi는 두 가지 간단한 명령을 사용하여 자신의 PyPI 인덱스를 만들 수 있습니다 :

    $ cd /tmp/; mkdir package/ 
    $ pip2tgz packages/ httpie==0.2 
    ... 
    $ ls packages/ 
    Pygments-1.5.tar.gz 
    httpie-0.2.0.tar.gz 
    requests-0.14.0.tar.gz 
    
  2. 이전 디렉토리에서 패키지 지수 :

    $ ls packages/ 
    bar-0.8.tar.gz 
    baz-0.3.tar.gz 
    foo-1.2.tar.gz 
    $ dir2pi packages/ 
    $ find packages/ 
    /httpie-0.2.0.tar.gz 
    /Pygments-1.5.tar.gz 
    /requests-0.14.0.tar.gz 
    /simple 
    /simple/httpie 
    /simple/httpie/httpie-0.2.0.tar.gz 
    /simple/Pygments 
    /simple/Pygments/Pygments-1.5.tar.gz 
    /simple/requests 
    /simple/requests/requests-0.14.0.tar.gz 
    
  3. 는 2 단계에서 구축 된 인덱스에서 설치하려면, 당신은 단순히 사용할 수 있습니다

    pip install --index-url=file:///tmp/packages/simple/ httpie==0.2 
    

보너스 : 당신은 심지어 자신을 미러링 할 수 있습니다 색인을 pip2pi으로 원격 호스트에 지정하십시오.

관련 문제