क्या "पाइप" के साथ एक पैकेज को अनइंस्टॉल करना भी आश्रित पैकेजों को हटा देता है?


153

जब आप pipएक पैकेज को स्थापित करने के लिए उपयोग करते हैं , तो सभी आवश्यक पैकेज भी इसके साथ स्थापित किए जाएंगे (निर्भरताएं)। क्या उस पैकेज को अनइंस्टॉल करने से आश्रित पैकेज भी निकल जाते हैं?


1
आप बस इसे आज़मा कर क्यों नहीं देख सकते? मैं ठीक यही करूंगा कि आपके प्रश्न का उत्तर दूं, लेकिन किसी कारणवश पाइप को अभी यहां पैकेज इंडेक्स नहीं मिल सकता है।
थॉमस वेंडर स्टिशल

1
मैंने पाइप न्यूज़ग्रुप में पाया है कि पाइप लोग इस कार्यक्षमता को नहीं चाहते हैं, कम से कम अभी के लिए। तरस आ रहा है!
मिशेल सामिया

4
@ThomasVanderStichele क्योंकि तब जवाब भविष्य के Googlers के लिए ऑनलाइन उपलब्ध नहीं होगा :)
मार्क

1
@ यह होगा, आप बस अपने सवाल का जवाब यहाँ लिखें।
थॉमस वैंडर Stichele

5
@ThomasVanderStichele: मैं ओपी नहीं हूं, लेकिन यहां एसओ के लिए यह एक बहुत ही कानूनी क्यू एंड ए है: ए pip) कुख्यात भंगुर और संस्करण पर निर्भर है, बी भी) कुछ ग्राहक इंस्टॉल में मुझे काम करना पड़ा है, इसके साथ स्थापित किया गया था व्यवस्थापक अधिकार (हालांकि पैकेज नहीं थे), इसलिए इसे तोड़ना या स्थापना रद्द करना भारी दुःख था और आपने इसे सही करने के लिए एक शॉट दिया था। ग) इंटरनेट कनेक्टिविटी महान नहीं हो सकती है; सुरक्षा कारणों से कॉरपोरेट मशीनें अक्सर फ़ायरवॉल हो जाती हैं, इसलिए आप डायरेक्ट कनेक्टिविटी को ग्रहण नहीं कर सकते हैं, और आपको पहले से सब कुछ जानना होगा जो आपको और इसके संस्करण की आवश्यकता होगी, और इसे डाउनलोड करें।
एसएमसीआई

जवाबों:


81

नहीं, यह निर्भरता संकुल की स्थापना रद्द नहीं करता है। यह केवल निर्दिष्ट पैकेज को हटाता है:

$ pip install specloud
$ pip freeze # all the packages here are dependencies of specloud package

अंजीर = = ०.६.१
नाक == १.१.२ पिनोच्चियो ==
०.३
सट्टा == ०.४.५

$ pip uninstall specloud
$ pip freeze

अंजीर = = ०.६.१
नाक == १.१.२
पिनोच्चियो == ०.३

जैसा कि आप देख सकते हैं कि वे पैकेज निर्भरताएँ हैं specloudऔर वे अभी भी वहाँ हैं, लेकिन specloudपैकेज ही नहीं।

जैसा कि नीचे उल्लेख किया गया है, आप एक पैकेज और अप्रयुक्त निर्भरता को हटाने के लिए पाइप-ऑटोरेमोव उपयोगिता को स्थापित और उपयोग कर सकते हैं ।


2
पैकेज के अनन्य निर्भरता पैकेज के बारे में क्या specloud?
फ्यूजन

@ फ़्यूज़न उन पैकेजों की स्पेकॉल की निर्भरता है।
बर्नार्डो

251

आप एक पैकेज और अप्रयुक्त निर्भरता को हटाने के लिए पाइप-ऑटोरेमोव उपयोगिता को स्थापित और उपयोग कर सकते हैं ।

# install pip-autoremove
pip install pip-autoremove
# remove "somepackage" plus its dependencies:
pip-autoremove somepackage -y

9
दुर्भाग्य से इसका कोई वास्तविक Python3 समर्थन नहीं है, फिर भी ( github.com/invl/pip-autoremove/issues/18 देखें )।
asmaier

10
अक्टूबर 2019 तक पायथन 3 में मेरे लिए अच्छा काम करना।
स्नैक्स

@ love.by.Jesus - मैं अजगर 3.8.3 पर हूं और मैंने परीक्षण किया और अभी भी कमांड को निष्पादित के रूप में देखा pip-autoremove(डैश अंडरस्कोर नहीं)। pip_autoremoveमुझे देता है command not found
bwv549

@ bwv549 मुझे यह समझाना होगा कि मैंने इसे निष्पादित किया python<version>(जब संस्करण निर्दिष्ट करना होगा)। इस तरह, हमें नाम को अनुकूलित करने की आवश्यकता है pip_autoremove(डैश को पैकेज नाम के रूप में अनुमति नहीं है)। उदाहरण के लिए python3.8 pip_autoremoveकाम करता है लेकिन python3.8 pip-autoremoveनहीं करता है। अन्यथा, जैसा कि आपने बताया, साधारण टर्मिनल कमांड के रूप में pip-autoremove, यह पूरी तरह से काम करता है :) -हालांकि सिस्टम के सिर्फ डिफ़ॉल्ट पायथन संस्करण का उपयोग किया जाता है। आपके संदेश के लिए धन्यवाद।
प्यार किया। येशुस

8

मैंने इस बैश लाइन का उपयोग करके पैकेज की निर्भरता को सफलतापूर्वक हटा दिया है:

for dep in $(pip show somepackage | grep Requires | sed 's/Requires: //g; s/,//g') ; do pip uninstall -y $dep ; done

इस पाइप 1.5.4 पर काम किया


41
हालांकि तकनीकी रूप से इस समाधान करता सफलतापूर्वक सभी निर्भरताएं निकालें, के रूप में अन्य उत्तर में उल्लेख किया है, यह भी निर्भरता जो कर रहे हैं अपनी स्थापना रद्द लक्ष्य के लिए अद्वितीय नहीं प्रणाली संकुल से स्थापित भी शामिल होते हैं,। उदाहरण के लिए, मेरे सिस्टम पर यह स्क्रिप्ट अंततः विफल रही क्योंकि लक्ष्य पैकेज में पाइप के साथ निर्भरता थी, इसलिए पाइप ने स्क्रिप्ट खत्म होने से पहले अपनी निर्भरता की स्थापना रद्द कर दी, और फिर विफल हो गया।
sinisterstuf

19
खबरदार यह केवल अगले स्तर की निर्भरता को हटाता है , लेकिन उन निर्भरताओं की निर्भरता को नहीं
तमकिस्क्वार

0

मुझे इसका हल मिल गया है, हालांकि कुछ को पूरा करना थोड़ा मुश्किल हो सकता है।

पहला चरण (python3 और linux के लिए):
pip3 install pip-autoremove
2nd step:
cd /home/usernamegoeshere/.local/bin/
3rd step:
gedit /home/usernamegoeshere/.local/lib/python3.8/site-packages/ पर जाएँ। pip_autoremove.py
और सभी pip (s) बदलकर pip3 4th स्टेप: ।/pip-autoremove packagenamegoeshere।

कम से कम, यह मेरे लिए काम किया गया था ...


-1

आपके पास https://github.com/cls1991/pef के लिए एक कोशिश हो सकती है । यह अपने सभी आश्रितों के साथ पैकेज को हटा देगा।


पीएफ केवल आभासी वातावरण में काम करने लगता है, दुर्भाग्य से।
बास

यह सिर्फ सुरक्षा कारणों से है, आप कोड को हैक करने में सक्षम हैं, बस सुरक्षा कोड बंद कर दें।
cls1991

1
क्या यह सुनिश्चित करता है कि वे निर्भरता "झूलने" हैं अर्थात अन्य वितरणों से अनावश्यक?
विम

हाँ, यह संदर्भ गिनती पर आधारित है।
cls1991

हे दोस्तों मैंने कोड को कांटा और संशोधित किया है। कृपया नीचे लिंक देखें। github.com/nalangekrushna/pef
Krissh
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.