पाइप का उपयोग करके पैकेज को कैसे अपडेट / अपग्रेड किया जाए?


171

पाइप का उपयोग करके पैकेज को अपडेट करने का तरीका क्या है? वे काम नहीं करते हैं:

pip update
pip upgrade

मुझे पता है कि यह एक सरल प्रश्न है, लेकिन इसकी आवश्यकता है क्योंकि इसे खोजना इतना आसान नहीं है (पाइप प्रलेखन पॉप अप नहीं करता है और स्टैक ओवरफ्लो से अन्य प्रश्न प्रासंगिक हैं लेकिन वास्तव में इसके बारे में नहीं हैं)

जवाबों:


280

रास्ता है

sudo pip install [package_name] --upgrade

या संक्षेप में

sudo pip install [package_name] -U

sudo कार्रवाई की पुष्टि करने के लिए अपना रूट पासवर्ड दर्ज करने के लिए कहेंगे।

यदि आपके पास रूट पासवर्ड नहीं है (यदि आप व्यवस्थापक नहीं हैं) तो आपको शायद virtualenv के साथ काम करना चाहिए और फिर आपको छोड़ देना चाहिए sudo:

pip install [package_name] --upgrade

2
जैसा pip install --helpकहा गया है -U, --upgrade Upgrade all specified packages to the newest available version.:। तो यह ऊपरी मामला होना चाहिए -U, नहीं -u
पीटर लियांग

25
जब आप ऐसा करते हैं तो ऐसा आम विकल्प क्यों नहीं दिखाया pip --helpजाता है ...
हुस्की

3
@ हस्की - हां, उसी तर्ज पर, वे सिर्फ एक upgradeकमांड क्यों नहीं बनाते हैं, जो आपको उत्तर में दिखाई देता है वह एक अच्छा सवाल है। (मतलब, अगर आप 'अपग्रेड' का उपयोग करते हैं तो यह बस install+ जो --upgradeकरता है।) एक प्रकार का 'उर्फ'।
बिशिया

10

एक गैर-विशिष्ट पैकेज और अधिक सामान्य समाधान के लिए आप पाइप-समीक्षा की जांच कर सकते हैं , एक उपकरण जो यह जांचता है कि पैकेज क्या अद्यतन किया जाना चाहिए / होना चाहिए।

$ pip-review --interactive
requests==0.14.0 is available (you have 0.13.2)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit y

3
हालांकि यह सीधे सवाल का जवाब नहीं देता है, हो सकता है कि कुछ लोग वास्तव में इस संदेश की तलाश करते हैं।
borgr

8

tl; डॉ स्क्रिप्ट को सभी संस्थापित संकुलों को अद्यतन करने के लिए

यदि आप केवल एक पैकेज को अपग्रेड करना चाहते हैं, तो @ borgr के उत्तर को देखें । मुझे अक्सर अपने सभी पैकेजों को एक ही बार में अपग्रेड करने के लिए, या कम से कम मनभावन लगता है। वर्तमान में, पाइप मूल रूप से उस कार्रवाई का समर्थन नहीं करता है, लेकिन श स्क्रिप्टिंग के साथ यह काफी सरल है। आप का उपयोग pip list, awk(या cutऔर tail), और आदेश प्रतिस्थापन। मेरा सामान्य वन-लाइनर है:

for i in $(pip list -o | awk 'NR > 2 {print $1}'); do sudo pip install -U $i; done

यह रूट पासवर्ड मांगेगा। यदि आपके पास उस तक पहुंच नहीं है, तो या virtualenv का --userविकल्प देखने के लिए कुछ हो सकता है।pip


7
import subprocess as sbp
import pip
pkgs = eval(str(sbp.run("pip3 list -o --format=json", shell=True,
                         stdout=sbp.PIPE).stdout, encoding='utf-8'))
for pkg in pkgs:
    sbp.run("pip3 install --upgrade " + pkg['name'], shell=True)

Xx.py के रूप में सहेजें
फिर Python3 xx.py
पर्यावरण चलाएं: python3.5 + pip10.0 +


मुझे यह समाधान पसंद है। मैंने अद्यतन के दौरान पैकेज का नाम दिखाने के लिए एक प्रिंट जोड़ा है:print('updating ', pkg['name'])
povj

4

Python3.4 + के लिए पाइप अपग्रेड करने के लिए, आपको pip3 का उपयोग इस प्रकार करना होगा:

sudo pip3 install pip --upgrade

यह / --r/local/lib/python3.X/dist-packages पर स्थित पाइप को अपग्रेड करेगा

अन्यथा, Python2.7 के लिए पाइप को अपग्रेड करने के लिए, आप निम्नानुसार पाइप का उपयोग करेंगे:

sudo pip install pip --upgrade

यह / :r/local/lib/python2.7/dist-packages पर स्थित पाइप को अपग्रेड करेगा


7
यह वह नहीं है जो ओपी ने पूछा था। वह पूछ रहा है कि एक विशिष्ट पैकेज को कैसे अपग्रेड किया जाए, न कि खुद पीआईपी।
commadelimited

फिर भी यह इन अन्य उत्तरों के बीच मददगार साबित होता है
उहोह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.