2012-09-20 21 views
9

का उपयोग कर वर्चुअलएव में पीआईपी पैकेज स्थापित करना कैश किए गए पैकेज का उपयोग करके वर्चुअलएन्व में पीपी पैकेज स्थापित करने का उचित तरीका क्या है? मैंने --timeout=360 और --use-mirrors सेट करने का प्रयास किया है, लेकिन पीपीआई प्रदर्शन इतना फ्लेकी है, यह नियमित रूप से लटकता है या डिस्कनेक्ट करता है, जो एक क्रैपशूट तैनाती करता है।एक डाउनलोड कैश

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

और उसके बाद स्थापना के दौरान इस कैश स्थान निर्दिष्ट करें:

तो, मेरी योजना (लेकिन उन्हें स्थापित नहीं),-डाउनलोड पूर्व करने के लिए सभी पैकेज अभिलेखागार जैसे --download-कैश विकल्प का उपयोग करने के लिए था virtualenv, जैसे में:

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 

कैश बनाना, बहुत निराशा होती थी, क्योंकि पिप nondeterministically कैश निर्देशिका के लिए डाउनलोड किए गए पैकेज को बचाने के लिए लगता है। विशेष रूप से, यह 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

संबंधित: क्या कोई बेहतर सीडीएन/दर्पण है, मैं ऐप को एक बनाने के बजाय ऐप को इंगित कर सकता हूं? – David

+0

मुझे लगता है कि "पीपी पैकेज" शब्द का उपयोग करना गलत है। शायद आप पीईपीआई पैकेज या पायथन पैकेज का मतलब है – glarrain

उत्तर

18

समस्या यह प्रतीत होती है कि --download-cache केवल डाउनलोड करने के लिए कैश निर्दिष्ट करने के लिए उपयोग किया जा सकता है, इंस्टॉल करने के लिए नहीं। इसलिए pip अभी भी पर /usr/local/pip/cache के बजाय देख रहा है। क्या आपने

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

डॉक्स से:

  1. एक पैकेज और उसके सभी आवश्यकताओं को प्रतिबिंबित करने के लिए, pip2tgz का उपयोग करें:

    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 के साथ एक दूरस्थ मेजबान के लिए सूचकांक।

संबंधित मुद्दे