2014-07-15 13 views
34

का उपयोग कर require.txt से python संकुल को अपग्रेड करें मैं पाइप कमांड का उपयोग कर require.txt फ़ाइल से अपने सभी पायथन पैकेज को अपग्रेड कैसे करूं?पीपी कमांड

नीचे आदेश

$ pip install --upgrade -r requirements.txt 

साथ की कोशिश की, के बाद से अजगर पैकेज संस्करण संख्या (Django==1.5.1) वे उन्नत करने के लिए नहीं है के साथ प्रत्यय कर रहे हैं। Guarant.txt फ़ाइल मैन्युअल रूप से संपादित करने से कहीं बेहतर तरीका है?

संपादित

एंडी उसके जवाब संकुल में उल्लेख किया है एक विशेष संस्करण में पिन किए गए हैं, इसलिए यह पिप आदेश के माध्यम से संकुल उन्नत करने के लिए संभव नहीं है।

लेकिन, हम निम्न आदेश का उपयोग कर pip-tools के साथ इसे प्राप्त कर सकते हैं।

$ pip-review --auto 

यह स्वचालित रूप से requirements.txt से सभी संकुल को अपग्रेड करेगा (कमांड स्थापित पिप का उपयोग कर pip-tools स्थापित करने के लिए सुनिश्चित कर लें)।

+2

पिप-उपकरण महान काम कर रहा है संपादित - अद्यतन वाक्य रचना पिप-संकलन यू requirements.txt' 'है। – erikreed

उत्तर

16

नहीं। आपका आवश्यकताओं फ़ाइल विशिष्ट संस्करण के लिए pinned किया गया है। यदि आपकी आवश्यकताएं उस संस्करण पर सेट हैं, तो आपको उन संस्करणों से परे अपग्रेड करने की कोशिश नहीं करनी चाहिए। यदि आप को अपग्रेड करने के लिए की आवश्यकता है, तो आपको अपनी आवश्यकताओं फ़ाइल में अनपिन किए गए संस्करणों पर स्विच करने की आवश्यकता है।

उदाहरण:

lxml>=2.2.0 

यह किसी भी नए से 2.2.0

lxml>=2.2.0,<2.3.0 

संस्करण इस 2.2.0 और 2.3.0 के बीच नवीनतम संस्करण में lxml उन्नयन होगा lxml उन्नयन होगा।

+0

मुझे निम्नलिखित करने में मदद मिली। 1. हटाए गए venv 2. उसी नाम के साथ एक नया नाम बनाया गया है (सभी पीपी पैकेजों को साफ करने का तरीका) 3. सभी == से> = को rescue.txt में बदलें 4. पीआईपी इंस्टॉल -आर आवश्यकताएं। txt 4. –

29

तुम कोशिश कर सकते हैं:

pip install --upgrade --force-reinstall -r requirements.txt 

तुम भी स्थापित पैकेज पर ध्यान न दें और स्थापित कर सकते हैं नया एक:

pip install -I, --ignore-installed -r requirements.txt 
+1

उस विकल्प के साथ यह एक ही संस्करण को पुनर्स्थापित करने लगता है। एंडी ने उपरोक्त उत्तर में उल्लेख किया है, पैकेज विशिष्ट संस्करण के लिए पिन किए गए हैं। – abhiomkar

+0

@abhiomkar आप कठोर हैं मैंने सोचा था कि आप एक ही संस्करण को स्थापित करना चाहते हैं (शायद बैकपोर्ट फिक्स जोड़ने के लिए) – Freelancer

+0

दूसरा आदेश वह है जिसे मैं ढूंढ रहा था। ध्यान दें कि '-I' और' --ignore-install' एक ही झंडे हैं और निश्चित रूप से यह ''' के लिए मान्य नहीं है। इस तरह इंस्टॉलेशन के दौरान कोई डाउनग्रेड नहीं होगा और आवश्यकताओं की स्थापना पूरी होने के बाद पूरी तरह से 'पाइप-समीक्षा --auto' का उपयोग कर स्थापित संकुल को अपग्रेड कर सकते हैं। – AXO

1

जब से मैं नहीं कर सका है कि पार्टी का उपयोग कर, मैं एक नया आवश्यकताओं बनाने नहीं संस्करणों के साथ फाइल और इसका इस्तेमाल करने के लिए एक अजगर मॉड्यूल लिखा है:

data = open('requirements-prod.pip', 'r') 
data2 = open('requirements-prod-no-version.pip', 'w') 
for line in data.readlines(): 
    new_line = line[:line.index('==')] 
    data2.write(new_line + '\n') 
data2.flush() 

फिर नई फ़ाइल से libs स्थापित pip install -U -r requirements-prod-no-version.pip

अंत में मूल फ़ाइल pip freeze > requirements-prod.pip

14

मैं पहले से ही इस सवाल का जवाब here के संस्करणों फ्रीज।

क्योंकि वहाँ पैकेज से पैकेज का उन्नयन, और requirements.txt फ़ाइल को अद्यतन करने के लिए कोई आसान तरीका था, मैं इस pip-upgrader जो भी संकुल चुना के लिए अपने requirements.txt फ़ाइल में संस्करणों को अद्यतन करता लिखा था (या: यहाँ मेरी समाधान है सभी पैकेज)।

स्थापना

pip install pip-upgrader 

प्रयोग

(, महत्वपूर्ण है क्योंकि यह भी वर्तमान virtualenv में अपग्रेड किए गए पैकेज के नए संस्करण स्थापित हो जाएगा) अपने virtualenv को सक्रिय करें।

अपनी परियोजना निर्देशिका में cd, तो चलाएँ:

pip-upgrade 

उन्नत उपयोग

आवश्यकताओं एक गैर मानक स्थान में रखा जाता है, तो उन्हें तर्क के रूप में भेजें:

pip-upgrade path/to/requirements.txt 

यदि आप पहले से ही जानते हैं कि आप किस पैकेज को अपग्रेड करना चाहते हैं, तो बस उन्हें तर्क के रूप में भेजें:

pip-upgrade -p django -p celery -p dateutil 

आप, पूर्व रिहाई के लिए/के बाद रिलीज़ संस्करण अपने आदेश को --prerelease तर्क जोड़ने उन्नत करने के लिए की जरूरत है।

पूर्ण प्रकटीकरण: मैंने यह पैकेज लिखा था।

+2

बढ़िया! यह आश्चर्य की बात है कि ऐसा एक समारोह सीधे पीआईपी में मौजूद नहीं है – Jacopofar

0

मैं नीचे के रूप में requirements.txt और रन $ श ./requirements.txt

pip install -U amqp; 
pip install -U appdirs; 
pip install -U arrow; 
pip install -U Babel; 
pip install -U billiard; 
pip install -U celery; 
pip install -U Django; 
pip install -U django-cors-headers; 
pip install -U django-crispy-forms; 
pip install -U django-filter; 
pip install -U django-markdown-deux; 
pip install -U django-pagedown; 
pip install -U django-timezone-field; 
pip install -U djangorestframework; 
pip install -U fcm-django; 
pip install -U flower; 
pip install -U gunicorn; 
pip install -U kombu; 
pip install -U Markdown; 
pip install -U markdown2; 
pip install -U packaging; 
संबंधित मुद्दे