मैं पाइप के माध्यम से स्थापित पायथन पैकेजों का कैसे पता लगा सकता / सकती हूं?


73

मैंने अपने सिस्टम का उपयोग करते हुए अकस्मात पायथन पैकेज स्थापित किए pipहैं apt-get। मैंने इसे दो तरीकों से किया:

  • virtualenv के पुराने संस्करण का उपयोग करते हुए, मैं virtualenv --no-site-packagesबनाते समय अपील करना भूल गया - उसके बाद जब मैंने फोन किया pip install, तो Python संकुल जहाँ virtualenv के बजाय सिस्टम में संस्थापित किया गया था
  • एक सही तरीके से सेटअप virtualenv में, मैंने टाइप किया sudo pip install somepackage- sudo को virtualenv के बजाय सिस्टम में संस्थापित किया गया है

मुझे यह देखने के लिए हुआ क्योंकि मैंने pip freezeएक virtualenv के बाहर टाइप किया , और कुछ पायथन पैकेज सूचीबद्ध किए जो वहाँ नहीं होने चाहिए। तो अब मेरा सवाल है:

  • मैं उन सभी पायथन पैकेजों की पहचान कैसे करूं जिन्हें सिस्टम में गलत तरीके से स्थापित किया गया है (अर्थात, पायथन पैकेज जो pip freezeसूची में दिखाई देते हैं , लेकिन साथ स्थापित नहीं थे apt-get)?
  • मैं उन्हें कैसे निकालूं?

जवाबों:


56

उबंटू वनरिक (और मुझे नए संस्करणों की भी उम्मीद है) पाइप पैकेज को /usr/local/lib/python2.7/dist-packages, और aptसंकुल को स्थापित करें /usr/lib/python2.7/dist-packages। तो बस पूर्व निर्देशिका और sudo pip uninstallआपके द्वारा खोजे गए हर पैकेज की जाँच करें ।


12
मैंने क्रूरता की और जारी किया sudo rm -r /usr/local/lib/python2.7। अब तक सब ठीक है।
एपर्टेक्स

@Apteryx, मैंने भी ऐसा ही किया /usr/local/lib/python3.5और कुछ समय बाद update-notifier-commonपायथन 3 sixपैकेज के गुम होने के कारण पैकेज का अपग्रेड फेल हो गया । मैं स्थापित करने के sixसाथ समाप्त हुआ sudo -H pip3 install six
अलेक्सी

2
@ भूत भगवान आप आदमी को लानत है! मैंने वैसा ही किया और अब मेरा पूरा सिस्टम गड़बड़ हो गया है! क्योंकि ubuntu में लगभग सब कुछ अजगर पर निर्भर करता है!
युकाशिमा हूकसे

मैंने देखा है कि अब मेरे पास टूटी हुई निष्पादन योग्य वस्तुओं का एक गुच्छा है /usr/local/bin/(कुछ समय पहले मैं बस हटा दिया गया /usr/local/lib/python3.5और कोंडा में बदल गया )।
एलेक्सी

22

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

pip freeze > dump.txt

किसी भी -e"संपादन योग्य इंस्टॉल" लाइनों को हटाने के लिए डंप की गई फ़ाइल को संपादित करें , ==साइन के बाद सब कुछ ( %s;==.*;;gvim में), रिक्त स्थान के लिए नई लाइनें स्वैप करें ( %s;\n; ;gvim में)। तब आप सभी संयुक्त राष्ट्र के स्वामित्व वाले पैकेजों की स्थापना रद्द कर सकते हैं

cat dump.txt | xargs sudo pip uninstall -y

मुझे इस प्रक्रिया को दो बार करना पड़ा, क्योंकि कुछ पैकेज भी स्थापित किए गए थे ~/.local/lib


1
यह मेरे लिए स्वीकृत उत्तर होना चाहिए
Nam G VU

3
क्या किसी को एक व्यर्थ का एक लाइनर चाहिए:sudo pip uninstall -y $(pip freeze | sed 's;==.*;;g' | tr '\n' ' ')
बेनोइट डफेज़

4
सावधान! यह इस बात पर निर्भर करता है कि आपका OS किसी विशेष संस्करण का उपयोग करता है या नहीं pip। आर्चलिनक्स पर pipखुशी से सिस्टम पैकेज को अनइंस्टॉल किया जाता है। दूसरी ओर, pipडेबियन जेसी शिकायत और त्रुटियों पर:Not uninstalling virtualenv at /usr/lib/python3/dist-packages, owned by OS
थॉमस जी।

1
क्या आपको सूडो की आवश्यकता है? - यह निश्चित रूप से स्वीकृत उत्तर होना चाहिए
जोनाथन

6

AFAIK sudo pip installपर स्थापित होगा /usr/local/lib/pythonVERSION/dist-packages। आपको sudo pip uninstallसंकुल प्रणाली की स्थापना रद्द करने के लिए चलाने की आवश्यकता है । ऐसा लगता है कि pip freezeपैकेज मेटाडेटा के लिए लग रहा है और कुछ भी स्थापित होने की सूची देगा, अर्थात पाइप से और साथ ही वर्चुअन से बाहर-प्राप्त करें। नहीं है -lआभासी वातावरण के अंदर विकल्प संकुल केवल कि आभासी वातावरण के लिए लागू सूची, लेकिन यह डिफ़ॉल्ट मामले के रूप में अच्छी तरह से अंदर आभासी वातावरण हो रहा है। मुझे लगता है कि आप संबंधित पैकेजों को केवल डिलीट कर सकते हैं /usr/local/lib/pythonVERSION/dist-packagesलेकिन बहुत सुविधाजनक तरीका नहीं है जो मुझे लगता है।


5

एक पैकेज पिप के माध्यम से स्थापित को दूर करने के लिए, बस प्रेस Ctrl+ Alt+ Tअपने कीबोर्ड पर टर्मिनल खोलने के लिए। जब यह खुलता है, तो नीचे कमांड चलाएँ।

pip uninstall < package-name >

पैकेज खोजने के लिए

pip search <package you want to search for>

यह निर्धारित करने के लिए कि कौन से पायथन पैकेज पाइप द्वारा स्थापित किए गए थे, freezeकमांड द्वारा , जो आपको स्थापित पैकेजों और उनके संस्करणों की एक सूची देगा। मैं सभी उदाहरणों को हटाने और sudo apt-getकमांड का उपयोग करके फिर से स्थापित करने का सुझाव दूंगा

sudo apt-get install python3

मैं यह कैसे निर्धारित करूं कि कौन से पायथन पैकेज पाइप द्वारा स्थापित किए गए थे, और कौन से उपयुक्त हैं? pip uninstallअगर मैं sudo pip installपहली जगह में इस्तेमाल करता हूं, तब भी क्या मैं कर सकता हूं ?
david.libremone

@ d3vid pip freezeकेवल स्थापित किए गए (AFAICS) पैकेज दिखाता है।
ओली

1
@ोली पाइप फ्रीज, सटीक में कम से कम, उपयुक्त द्वारा स्थापित पैकेजों को भी सूचीबद्ध करता है, जैसा कि अन्य उत्तर यहां वर्णित हैं।
nealmcb

0

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

pip list | awk 'NR>2 {print $1}' | xargs -I {} pip uninstall -y {}

-2

यह Homebrew के साथ कुछ करना है। मैं अपने मैक एयर पर pyodbc के साथ कोई समस्या नहीं थी जब तक कि मैंने Homebrew स्थापित नहीं किया और कुछ चीजों के लिए इसका इस्तेमाल किया। मुझे यह सूत्र जीथब पर मिला जो मेरे लिए काम करने वाले समाधान में समाप्त होता है।

"यदि आपके पास होमब्रेव है, तो ओडीबीसी हेडर स्थापित करें:

$ brew install unixodbc

और "फिर से पाइप स्थापित करें" pyodbc चलाएं।

इस 100% ने मेरे लिए समस्या को हल कर दिया और केवल एक पल लिया। इसे आजमा कर देखें।


शायद आपको यह अलग से पूछना चाहिए? Apple.stackexchange.com
david.libremone
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.