आप एक अजगर पैकेज को कैसे अनइंस्टॉल करते हैं जो डिस्टिल्स का उपयोग करके स्थापित किया गया था?


92

क्या आप केवल अपने अजगर की स्थापना से निर्देशिका को हटा सकते हैं, या ऐसी कोई भी सुस्त फ़ाइलें हैं जिन्हें आपको हटाना चाहिए?

जवाबों:


45

यह उन विकल्पों के आधार पर भिन्न होता है जिन्हें आप पैकेज में सिस्टम / पर डिस्टुटिल्स कॉन्फ़िगरेशन फ़ाइलोंinstall की सामग्री और पास करते हैं । मुझे विश्वास नहीं है कि इन तरीकों में निर्दिष्ट निर्देशिकाओं के बाहर किसी भी फाइल को संशोधित किया गया है।

विशेष रूप से, डिस्टुटिल के पास इस समय अनइंस्टॉल कमांड नहीं है ।

यह भी उल्लेखनीय है कि एक पैकेज / अंडे को हटाने से निर्भरता के मुद्दे पैदा हो सकते हैं - easy_installऐसी समस्याओं को कम करने के प्रयास जैसी उपयोगिताओं ।


4
क्या आप कृपया इसे सीधे सवाल के हिस्से की सुस्त फाइलों को संबोधित करने के लिए अपडेट कर सकते हैं?
— S.Lott

मुझे लगा कि मैंने किया - डिस्टुटिल्स कॉन्फ़िगरेशन द्वारा निर्दिष्ट निर्देशिकाओं के बाहर कोई फाइल नहीं बनाई गई है और झंडे स्थापित किए हैं, इसलिए इन निर्देशिकाओं में कोई भी "सुस्त" फाइलें मौजूद होंगी। यह पैकेज से पैकेज में भिन्न होता है।
— cdleary

2
@ LCDleary: धन्यवाद, लेकिन, मैं उम्मीद कर रहा था कि आप केवल अपना स्पष्टीकरण स्पष्ट करेंगे और अपने उत्तर को मजबूत करेंगे, लंबी टिप्पणी धागा नहीं जोड़ेंगे।
— एस.लॉट

2
@ एस.लॉट: क्षमा करें, लेकिन मुझे नहीं पता कि आप किस उत्तर पर स्पष्टीकरण चाहते हैं - क्या आप अधिक विशिष्ट हो सकते हैं?
— cdleary

1
msg139773 दिनांक: 2011-07-04 14:35 distutils2 / पैकेजिंग अब एक हटाने का कार्य और एक pysetup हटाने की कमांड प्रदान करता है।
— एडवर्ड २

19

जिन तीन चीजों को स्थापित किया जाना है, जिन्हें आपको हटाना होगा:

  1. संकुल / मॉड्यूल
  2. स्क्रिप्ट
  3. डेटा की फ़ाइलें

अब मेरे लिनक्स सिस्टम पर ये रहते हैं:

  1. /usr/lib/python2.5/site-packages
  2. / Usr / bin
  3. / Usr / share

लेकिन एक विंडोज़ सिस्टम पर वे पूरी तरह से पायथन वितरण निर्देशिका के भीतर होने की संभावना है। मुझे OSX के बारे में कोई जानकारी नहीं है सिवाय इसके कि लिनक्स पैटर्न का पालन करना अधिक पसंद है।


14

दूसरी बार स्टाम्प आधारित हैक:

  1. एक एंकर बनाएँ: touch /tmp/ts
  2. हटाए जाने वाले पैकेज को पुनर्स्थापित करें: python setup.py install --prefix=<PREFIX>
  3. उन फ़ाइलों को निकालें जो एंकर फ़ाइल से अधिक हाल की हैं: find <PREFIX> -cnewer /tmp/ts | xargs rm -r

1
-1। मुझे पसंद नहीं है | xargs rm -r। मैं प्रत्येक फ़ाइल को मैन्युअल रूप से जाने की सलाह देता हूं । Ext4 (और अन्य फ़ाइल सिस्टम) पर, यह findसभी फ़ोल्डरों को भी सूचीबद्ध करने वाला है। यदि आपका उपसर्ग था /usr, तो आप हटाने जा/usr/* रहे हैं ।
— मातेन उल्हाक

8

हां, यह केवल उन चीजों को हटाने के लिए सुरक्षित है जो डिस्टुटिल स्थापित हैं। यह स्थापित फ़ोल्डर या .egg फ़ाइलों के लिए जाता है। स्वाभाविक रूप से कुछ भी जो उस कोड पर निर्भर करता है वह अब काम नहीं करेगा।

यदि आप इसे फिर से काम करना चाहते हैं, तो बस फिर से स्थापित करें।

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


5

उबंटू 12.04 में, मैंने पाया है कि डिफ़ॉल्ट रूप से देखने के लिए एकमात्र जगह की आवश्यकता है

/usr/local/lib/python2.7/

और संबंधित फ़ोल्डर और फ़ाइल को हटा दें, अगर वहाँ एक है!


कभी-कभी / usr / lib / python <2.7 / 3.6> में
— विनीत

4

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

यदि आप इसका उपयोग करते हैं, तो कुछ भी जिसे आप स्क्रिप्ट के रूप में घोषित करते हैं, एक सुस्त फाइल के रूप में पीछे रह जाएगा।


4

install --record + xargs rm

sudo python setup.py install --record files.txt
xargs sudo rm -rf < files.txt

सभी फाइलों को हटा देता है और खाली निर्देशिकाओं को पीछे छोड़ देता है।

यह आदर्श नहीं है, पैकेज संघर्षों से बचने के लिए यह पर्याप्त होना चाहिए।

और फिर आप मैन्युअल रूप से काम समाप्त कर सकते हैं यदि आप पढ़ना चाहते हैं files.txt , या साहसी होना चाहिए और खाली निर्देशिका को हटाने के साथ-साथ स्वचालित भी कर सकते हैं।

एक सुरक्षित सहायक होगा:

python-setup-uninstall() (
  sudo rm -f files.txt
  sudo python setup.py install --record files.txt && \
  xargs rm -rf < files.txt
  sudo rm -f files.txt
)

पायथन 2.7.6, उबंटू 14.04 में परीक्षण किया गया।


3

विंडोज में पायथन के लिए:

python -m pip uninstall "package_keyword"
uninstall **** (y/n)?

2

मैंने अभी-अभी अजगर पैकेज की स्थापना रद्द की है, और भले ही मैं निश्चित नहीं हूं कि मैंने ऐसा पूरी तरह से किया है, मैं उचित रूप से आश्वस्त हूं।

मैंने सभी की सूची प्राप्त करके शुरुआत की अजगर से संबंधित फाइलों , तारीख से आदेश दिया, इस धारणा पर कि मेरे पैकेज की सभी फ़ाइलों में कमोबेश एक ही टाइमस्टैम्प होगा, और कोई अन्य फाइल नहीं होगी।

सौभाग्य से, मैंने पायथन को स्थापित किया है /opt/Python-2.6.1; यदि मैं अपने लिनक्स डिस्ट्रो के साथ आने वाले पायथन का उपयोग कर रहा था, तो मुझे सभी को परिमार्जन /usrकरना होगा, जिसमें एक लंबा समय लगा होगा।

फिर मैंने बस उस सूची की जांच की, और राहत के साथ नोट किया कि सभी सामान जो मुझे चाहिए था, जिसमें एक निर्देशिका /opt/Python-2.6.1/lib/python2.6/site-packages/module-name/, और एक फ़ाइल शामिल थी, और /opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.egg-info।

इसलिए मैंने उन लोगों को हटा दिया।

यहां बताया गया है कि मुझे फ़ाइलों की दिनांक-क्रमबद्ध सूची कैसे मिली:

find "$@" -printf '%T@ ' -ls | sort -n | cut -d\ -f 2-

(मुझे लगता है कि यह GNU "खोज" हो गया है, वैसे, OS X पर आपको जो स्वाद मिलता है, वह "-printf '% T @'" के बारे में नहीं पता)

मैं हर समय उपयोग करता हूं ।


2

विंडोज 7 के लिए,

नियंत्रण कक्ष -> कार्यक्रम -> स्थापना रद्द करें

, फिर

हटाने के लिए अजगर पैकेज चुनें।


@ मौरिसियो मुझे सूची में पुराने संस्करण नहीं दिख रहे हैं लेकिन मैं साइट-पैकेजों में अंडे की फाइलें देख सकता हूं। क्या ये एक दिक्कत है?

1

Mac OSX पर, अपने pathToPython / साइट-पैकेज / काम करेगा के तहत इन 2 निर्देशिकाओं को मैन्युअल रूप से हटा दें :

  • {पैकेज का नाम}
  • {PackageName} - {} संस्करण -info

उदाहरण के लिए, pyasn1 को हटाने के लिए , जो एक डिस्टुटिल स्थापित परियोजना है:

  • rm -rf lib / python2.7 / साइट-संकुल / pyasn1
  • rm -rf lib / python2.7 / साइट-संकुल / pyasn1-0.1.9.9-py2.7.egg-info

यह जानने के लिए कि आपका साइट-पैकेज कहां है:

python -m site

1
उम्मीद के मुताबिक काम करता है।
— c1377554

-1

ERROR: flake8 3.7.9 has requirement pycodestyle<2.6.0,>=2.5.0, but you'll have pycodestyle 2.3.1 which is incompatible. ERROR: nuscenes-devkit 1.0.8 has requirement motmetrics<=1.1.3, but you'll have motmetrics 1.2.0 which is incompatible. Installing collected packages: descartes, future, torch, cachetools, torchvision, flake8-import-order, xmltodict, entrypoints, flake8, motmetrics, nuscenes-devkit Attempting uninstall: torch Found existing installation: torch 1.0.0 Uninstalling torch-1.0.0: Successfully uninstalled torch-1.0.0 Attempting uninstall: torchvision Found existing installation: torchvision 0.2.1 Uninstalling torchvision-0.2.1: Successfully uninstalled torchvision-0.2.1 Attempting uninstall: entrypoints Found existing installation: entrypoints 0.2.3 ERROR: Cannot uninstall 'entrypoints'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

फिर मैं टाइप करता हूं:

conda uninstall entrypoints pip install --upgrade pycodestyle pip install nuscenes-devkit

किया हुआ!


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