डिफ़ॉल्ट स्थापना प्लस पैकेज निर्भरता के लिए पायथन इंस्टॉलेशन को पुनर्स्थापित करें


14

मैंने अपने पायथन इंस्टॉलेशन (2 और 3) के साथ बहुत कुछ खेला है और संकुल का एक गुच्छा स्थापित किया है, कुछ का उपयोग करते हुए apt-get, लेकिन अधिकांश का उपयोग करते हुए pip। मैंने नए संस्करण के aptसाथ कई- अनइंस्टॉल किए गए पैकेजों को भी अपग्रेड किया है pip

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

मैं यह करना चाहता हूं कि सिस्टम के लिए पाइथन पर्यावरण के साथ छेड़छाड़ हो और मेरे संशोधन केवल virtualenvs में हों।

क्या यह सिस्टम पुनर्स्थापना के बिना संभव है? मैं इसे कैसे संपर्क करूंगा?


जवाबों:


5

मैं पायथन संकुल को सूचीबद्ध करके शुरू करूँगा apt-get(निम्न एक-लाइनर को चलाने में कुछ सेकंड लगते हैं, धैर्य रखें):

$ for pyfile in `ls /usr/lib/python2.7/dist-packages`; do dpkg -S "/usr/lib/python2.7/dist-packages/${pyfile}" | sed 's/:.*//g'; done | sort -u

नोट: यदि आवश्यक हो, तो आपके द्वारा रुचि लिए जाने वाले अजगर संस्करण के साथ 2.7 को बदलें।

इसके बाद, आपके द्वारा इंस्टॉल किए गए पैकेज की स्थापना रद्द करें। यदि आप अनिश्चित हैं कि आपने कौन सा इंस्टॉल किया है, तो आप निम्न कमांड का उपयोग करके मैन्युअल रूप से इंस्टॉल किए गए सभी पैकेजों की सूची प्राप्त कर सकते हैं ( यह प्रश्न देखें ):

$ comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)

फिर आपके द्वारा स्वयं स्थापित किए गए पायथन पैकेजों की स्थापना रद्द करें, उदाहरण के लिए:

$ sudo apt-get remove python-tk python-scipy

आगे, आप जानना चाहते हैं कि आपने कौन से पैकेज पाइप का उपयोग करके स्थापित किए हैं:

$ ls -ltd /usr/local/lib/python2.7/dist-packages/*

यह कमांड अंतिम संशोधन तिथि द्वारा छांटे गए पाइप के इंस्टॉलेशन डायरेक्टरी की सामग्री को सूचीबद्ध करता है, जिससे आपके द्वारा खुद को इंस्टॉल किए गए पैकेजों को खोजना आसान हो जाता है। उदाहरण के लिए, मैंने Google का gcloudउपकरण स्थापित किया है जो पाइप पैकेजों का एक गुच्छा स्थापित करता है जिसे मैं अनइंस्टॉल नहीं करना चाहता, लेकिन सूची के माध्यम से यह देखना आसान है कि वे सभी एक ही सटीक समय पर स्थापित किए गए थे, इसलिए मुझे पता है कि मुझे कौन से उपकरण चाहिए छोड़ दो, और जो मैं स्थापना रद्द कर सकते हैं। किसी भी पाइप पैकेज की स्थापना रद्द करने से पहले, आपको स्थापित पैकेजों की सूची का एक स्नैपशॉट लेना चाहिए:

$ sudo pip freeze > $HOME/pip_freeze_snapshot.txt

फिर उदाहरण के लिए, अपने इच्छित पैकेजों की स्थापना रद्द करें:

$ sudo pip uninstall py pytest

अंत में, यह न भूलें कि कुछ पाइप पैकेज आपके उपयोगकर्ता निर्देशिका में स्थापित किए गए हैं। शायद आप इसके साथ ठीक हैं, लेकिन यदि नहीं, तो आप उन्हें सूचीबद्ध कर सकते हैं:

$ ls -ltd $HOME/.local/lib/python2.7/site-packages/*

यदि आप इन सभी पैकेजों से छुटकारा पाना चाहते हैं तो आप इस निर्देशिका को हटा सकते हैं। अन्यथा, उदाहरण के लिए, केवल व्यक्तिगत पैकेजों की स्थापना रद्द करें:

$ pip uninstall tensorflow

अन्य अजगर संस्करणों (उदाहरण के लिए, 3.5) की जांच करना न भूलें।


मैं एक सार्वजनिक सुरक्षा घोषणा की सिफारिश करूंगा जो बहुत सारे पैकेजों को हटाने से आपके सिस्टम को अपंग कर सकती है, लेकिन अन्यथा यह एक उत्कृष्ट मार्गदर्शिका है। (उदाहरण के लिए, मुझे खुशी है कि मैंने किया था mvके बजाय rmमेरी पर /usr/local/lib/python3.6, क्योंकि मैं कुछ ही मिनटों के बाद में पता चला है कि मैं काफी बुनियादी प्रणाली कार्यों के लिए वहाँ में कुछ बातें की जरूरत है।
craq
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.