2011-03-03 21 views
118

मैं उबंटू 9:10 चला रहा हूं और M2Crypto नामक एक पैकेज स्थापित है (संस्करण 0.1 9 .1 है)। मुझे M2Crypto पैकेज (0.20.2) के नवीनतम संस्करण को डाउनलोड, निर्माण और स्थापित करने की आवश्यकता है।मैं पाइथन पैकेज कैसे अपडेट करूं?

0.19.1 पैकेज में कई स्थानों में फ़ाइलें हैं (/ usr/share/pyshared और /usr/lib/pymodules.python2.6)।

0.20.2 इंस्टॉल करने से पहले मैं अपने सिस्टम से संस्करण 0.19.1 को पूरी तरह से अनइंस्टॉल कैसे कर सकता हूं?

उत्तर

30

आप pip जैसे पाइथन पैकेज मैनेजर को देखना चाहते हैं। यदि आप एक पायथन पैकेज मैनेजर का उपयोग नहीं करना चाहते हैं, तो आपको पुरानी स्थापना पर M2Crypto डाउनलोड करना और बनाना/संकलित/स्थापित करना चाहिए।

+0

धन्यवाद। आपने जो कहा वह काम किया। मैंने 0.1 9 .1 को अनइंस्टॉल करने की आवश्यकता के बिना 0.20.2 बनाया और स्थापित किया। – thompson

4

पैकेज मूल रूप से कैसे स्थापित किया गया था? यदि यह उपयुक्त के माध्यम से किया गया था, आप केवल आपके easy_install के माध्यम से इसे स्थापित किया है apt-get remove python-m2crypto

ऐसा करने में सक्षम हो सकता है, मैं पूरी तरह से सुनिश्चित एक ही तरीका है, बस lib के अंतर्गत फ़ाइलें कचरा है साझा कर रहा हूँ आदि ..

भविष्य में मेरी सिफारिश? अपने पैकेज को स्थापित करने के लिए pip जैसे कुछ का उपयोग करें। इसके अलावा, आप virtualenv नामक किसी चीज़ को देख सकते हैं, इसलिए आपके पैकेज केवल रूट पर बजाय प्रति-पर्यावरण आधार पर संग्रहीत किए जाते हैं।

पिप के साथ, यह बहुत आसान है:

pip install m2crypto 

लेकिन आप भी सही पते के साथ Git, SVN, आदि से रेपोस स्थापित कर सकते हैं। यह सब pip documentation

+0

जिस तरह से वह बताता है कि फाइलें कहां स्थापित हैं, यह इंगित करती है कि पैकेज एपीटी पैकेज मैनेजर का उपयोग करके स्थापित किया गया था - क्योंकि (डेबियन AFAIK पर) apt सूचीबद्ध 2 स्थानों के तहत पायथन पैकेज स्थापित करेगा -/share/pyshared/.. साझा करने के लिए है संस्करण विशिष्ट भागों के लिए संस्करणों और/usr/lib/.. में कोड। दूसरी ओर आसान स्थापित/पीआईपी/usr/local/lib/.. का उपयोग करेगा - जैसा कि आपने कहा था - बस apt-get remove उसे किया होगा। –

265

से समझाया गया है सबसे अच्छा तरीका है मैंने पाया टर्मिनल

sudo pip install [package_name] --upgrade 

sudo से इस आदेश को चलाने के लिए कार्रवाई की पुष्टि करने के लिए अपने रूट पासवर्ड दर्ज करने के लिए पूछना होगा है।

+2

और यदि आप प्रमाणीकरण के बिना प्रॉक्सी का उपयोग कर रहे हैं: सुडो पाइप इंस्टॉल [पैकेज] - अपग्रेड --proxy = पता: पोर्ट – lmsasu

+10

मैं इस उत्तर के लिए यहां आया था। मैंने 'पीआईपी अपडेट' और 'पीपी अपग्रेड' की कोशिश की और जब तक मैंने 'अपग्रेड' नहीं देखा तब तक बेताब था। वे 'पाइप अपग्रेड' कमांड क्यों नहीं जोड़ते हैं? –

+3

यह वास्तव में एक अच्छी तरह से छिपी हुई विशेषता है। – otocan

15
  1. खिड़कियों के माध्यम से शीघ्र कमान, चलाएँ: pip list --outdated आप पुरानी पैकेजों की सूची मिल जाएगा।
  2. रन: pip install [package] --upgrade यह [package] को अपग्रेड करेगा और पिछले संस्करण को अनइंस्टॉल करेगा।
27

स्वचालित रूप से सभी पुरानी पैकेज (कि पिप का उपयोग कर स्थापित किए गए थे), बस स्क्रिप्ट bellow चलाने का उन्नयन करने के लिए,

pip install $(pip list --outdated | awk '{ print $1 }') --upgrade 

यहाँ, pip list --outdated सब बाहर दिनांकित संकुल सूची और फिर हम यह पाइप के लिए होगा अजीब, तो यह केवल नाम मुद्रित करेगा। फिर, $(...) इसे एक चर बना देगा और फिर, सबकुछ स्वतः परिपक्व हो जाएगा। सुनिश्चित करें कि आपके पास अनुमतियां हैं।(बस पिप से पहले sudo डाल अगर आप असमंजस में हैं) मैं नाम के एक पटकथा लिखने हैं, pip-upgrade कोड bellow है,

#!/bin/bash 
sudo pip install $(pip list --outdated | awk '{ print $1 }') --upgrade 

तो यह तैयार करने के लिए स्क्रिप्ट के निम्नलिखित लाइनों का उपयोग करें:

sudo chmod +x pip-upgrade 
sudo cp pip-upgrade /usr/bin/ 

फिर, pip-upgrade और वॉयला हिट करें!

+0

मुझे अंतिम ब्रैकेट में इंगित करने वाली वाक्यविन्यास त्रुटि मिली: 'awk: cmd। लाइन: 1: {प्रिंट $ 1}) ' –

+2

@ टीटी 'पीआईपी' के नए संस्करणों के लिए आपको '--format = legacy' विकल्प, यानी,' पीआईपी सूची --outdated --format = legacy' का उपयोग करने की आवश्यकता है। इसके अलावा हर कोई: पीआईपी के माध्यम से सभी मॉड्यूल को अंधाधुंध अद्यतन करना कई लिनक्स डिस्ट्रोज़ पर काफी खतरनाक हो सकता है। उनमें से कई डिस्ट्रो पैकेज के माध्यम से विशिष्ट पायथन मॉड्यूल प्रदान करते हैं और उनमें से कुछ डिस्ट्रोज़ (विशेष रूप से आरएचईएल) यदि आप छल अपडेट करते हैं तो मुश्किल तोड़ सकते हैं ... इस तथ्य का जिक्र नहीं करते कि यदि आप पाइप के माध्यम से अपडेट करते हैं, तो डिस्ट्रो पैकेज आपके बदलावों को वापस कर सकते हैं भविष्य का अद्यतन – rsaw

2

सभी पुरानी संकुल प्राप्त करें और पिप स्थापित xxx प्रत्येक पुराना संकुल

4

मुझे लगता है कि सबसे अच्छा एक लाइनर है के लिए --upgrade निम्नलिखित आदेशों के साथ एक बैच फ़ाइल बनाने:

pip install --upgrade <package>==<version> 
2

विधि 1: एक

करके स्वयं भी एक अपग्रेड पिप स्थापित PACKAGE_NAME यू

विधि 2: यू सभी को एक साथ पगड़ें (उच्च अवसर रोलबैक अगर कुछ पैकेज

पाइप इंस्टॉल करें (पाइप सूची - आउटडेटेड --format = कॉलम | tail -n +3 | cut -d "" -f1) - अपग्रेड

विधि 3: में $ i के लिए पाश

का उपयोग कर एक के बाद एक अपग्रेड करें (पिप सूची --outdated --format = कॉलम | पूंछ -n +3 | -d कट "" -f1); पीआईपी $ i - अपग्रेड स्थापित करें; किया

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