पाइप इंस्टाल के साथ स्थापित पैकेज को कैसे अनइंस्टॉल करें --user


219

--userपाइप के लिए एक विकल्प है जो प्रति उपयोगकर्ता पायथन पैकेज स्थापित कर सकता है:

pip install --user [python-package-name]

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

pip uninstall --user [python-package-name]

लेकिन मुझे मिल गया:

no such option: --user

मैं उस पैकेज को कैसे अनइंस्टॉल कर सकता हूं जिसे मैंने पैकेज के साथ pip install --userमैन्युअल रूप से खोजने और हटाने के अलावा स्थापित किया था ?

मुझे यह लेख मिला है

पाइप प्रति-उपयोगकर्ता साइट-संकुल निर्देशिका से अनइंस्टॉल नहीं कर सकता है

जो बताता है कि उपयोगकर्ता निर्देशिका से संकुल की स्थापना रद्द करने का समर्थन नहीं करता है। लेख के अनुसार अगर इसे सही तरीके से लागू किया गया था तो

pip uninstall [package-name]

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


1
नहीं, आपको प्रति उपयोगकर्ता एक virtualenv सेट करना होगा: समूह और फ़ोल्डर युक्त उचित सिस्टम अनुमतियाँ दें।
डेनियस

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

@tripleee: मेरे पास अनुमति प्रणाली चौड़ी नहीं है और न चाहते हुए भी, मुझे बस इसे वर्तमान उपयोगकर्ता के लिए अनइंस्टॉल करने की आवश्यकता है
Serjik

1
यह पता लगाएं कि आपके पास कौन सी निर्देशिका है, इसकी अनुमतियाँ निकालने, या मैन्युअल रूप से हटाने या इसे साइड में ले जाने की अनुमति नहीं है।
ट्रिपल

जवाबों:


196

लिनक्स पर पायथन 3.5 और पाइप 7.1.2 का उपयोग करके यह परीक्षण करने के बाद, स्थिति यह प्रतीत होती है:

  • pip install --user somepackageइसका उपयोग करने $HOME/.localऔर इसे अनइंस्टॉल करने के लिए स्थापित करता है , इसका उपयोग करके काम करता है pip uninstall somepackage

  • यह सच है कि क्या somepackageएक ही समय में सिस्टम-वाइड स्थापित भी है या नहीं ।

  • यदि पैकेज दोनों स्थानों पर स्थापित किया गया है, तो केवल स्थानीय एक की स्थापना रद्द की जाएगी। पैकेज सिस्टम-वाइड का उपयोग करने की स्थापना रद्द करने के लिए pip, पहले इसे स्थानीय रूप से अनइंस्टॉल करें, फिर rootविशेषाधिकारों के साथ फिर से वही अनइंस्टॉल कमांड चलाएं ।

  • पूर्वनिर्धारित उपयोगकर्ता इंस्टॉल निर्देशिका के अलावा, pip install --target somedir somepackageपैकेज को स्थापित करेगा somedir। ऐसी जगह से किसी पैकेज को अनइंस्टॉल करने का कोई तरीका नहीं है pip। (लेकिन गितुब पर कुछ पुराना अनमैरिड पुल अनुरोध है जो लागू होता है pip uninstall --target।)

  • चूंकि केवल स्थान pipकभी भी अनइंस्टॉल किए जाएंगे, सिस्टम-वाइड और पूर्वनिर्धारित उपयोगकर्ता-स्थानीय हैं, आपको pip uninstallकिसी दिए गए उपयोगकर्ता की स्थानीय इंस्टॉल निर्देशिका से स्थापना रद्द करने के लिए संबंधित उपयोगकर्ता के रूप में चलाने की आवश्यकता है ।


2
क्या ये कथन आभासी वातावरण के अंदर पाइप चलाने के लिए सटीक हैं?
kbolino

मेरे मामले में अनइंस्टॉल करना पाइप के लिए काम नहीं करता था। 9.0.1 पैकेज अभी भी घर पर स्थापित है। / /
जीनोम

2
बिंदु 2 मेरे सिस्टम पर सही नहीं लगता है। मेरे पास एक सिस्टम पैकेज jediस्थापित है /usr/lib64/python2.7/site-packages/। जब मैं करता हूं, एक सामान्य उपयोगकर्ता के रूप में: pip install --user jedi और फिर pip uninstall jedi, पाइप अनइंस्टॉल करने की कोशिश करता है /usr/lib64/python2.7/site-packages/jediऔर फिर के साथ किक करता है Permission denied। तो अगर --userस्थापना रद्द करें आदेश के लिए मौजूद नहीं है, मैं कैसे स्थापना रद्द करें बता कर नहीं की स्थापना रद्द करने की कोशिश करने का /usr/lib64/python2.7/site-packages/jediलेकिन ~/.local/lib64/python3.6/site-packages/jedi?
एस्ट्रोफ्लोयड

ठीक वैसे ही यहाँ @AstroFloyd
Nikana Reklawyks


9

हालांकि, उन लोगों के लिए सावधान रहें जो pip install --user some_pkg एक आभासी वातावरण के अंदर उपयोग करते हैं

$ path/to/python -m venv ~/my_py_venv
$ source ~/my_py_venv/bin/activate
(my_py_venv) $ pip install --user some_pkg
(my_py_venv) $ pip uninstall some_pkg
WARNING: Skipping some_pkg as it is not installed.
(my_py_venv) $ pip list
# Even `pip list` will not properly list the `some_pkg` in this case

इस स्थिति में, आपको वर्तमान वर्चुअल वातावरण को निष्क्रिय करना होगा , फिर उपयोगकर्ता साइट पैकेजों को सूचीबद्ध या अनइंस्टॉल करने के लिए संबंधित python/ pipनिष्पादन योग्य का उपयोग करें :

(my_py_venv) $ deactivate
$ path/to/python -m pip list
$ path/to/python -m pip uninstall some_pkg

ध्यान दें कि यह समस्या कुछ साल पहले बताई गई थी । और ऐसा लगता है कि वर्तमान निष्कर्ष यह है: --userएक आभासी वातावरण के अंदर मान्य नहीं है pip, क्योंकि एक उपयोगकर्ता स्थान वास्तव में एक आभासी वातावरण के लिए समझ में नहीं आता है।


3
बहुत देर हो गई!, मैंने --userवर्चुअल एनवी के अंदर इस्तेमाल किया , क्या किसी तरह से उसे वापस लाया जा सकता है?, क्योंकि pip listकाम नहीं करता है ....
jnfran92

2
'और ऐसा लगता है कि वर्तमान निष्कर्ष है: --user एक आभासी env के पाइप के अंदर मान्य नहीं है, क्योंकि एक उपयोगकर्ता स्थान वास्तव में एक आभासी वातावरण के लिए कोई मतलब नहीं है।' माना। उपयोगकर्ता एक आभासी वातावरण के पूरे उद्देश्य को पराजित करता है। दुर्भाग्य से वहाँ लोगों के बहुत सारे बुरे उदाहरण हैं।
स्टीफन बॉश

5

मुझे लगता है कि --userध्वज के साथ स्थापित संकुल की स्थापना रद्द करना संभव है । यह एक मेरे लिए काम किया;

pip freeze --user | xargs pip uninstall -y

अजगर 3 के लिए;

pip3 freeze --user | xargs pip3 uninstall -y

लेकिन किसी भी तरह ये कमांड सेटपूल और पाइप की स्थापना रद्द नहीं करते हैं। उन आदेशों के बाद (यदि आप वास्तव में स्वच्छ अजगर चाहते हैं) तो आप उन्हें हटा सकते हैं;

pip uninstall setuptools && pip uninstall pip


2
यह एक सुरुचिपूर्ण समाधान है जिसने मेरे लिए अच्छा काम किया है।
स्टीफन बॉश

2

इसका उत्तर अभी तक संभव नहीं है । आपको इसे मैन्युअल रूप से निकालना होगा।


पैकेज स्थापित करते समय, एक ट्रेसबैक था। अनइंस्टॉल ने उसके बाद कभी काम नहीं किया।
सिआम

मैं किसी दिए गए पैकेज के लिए स्थापित सभी फ़ाइलों की सूची कैसे करूं (ताकि मैं उन्हें हटा सकूं)?
एस्ट्रोफ्लोयड

प्रभावी रूप से असंभव है क्योंकि पाइप सेटअप सेटअप को चलाता है जो बाहरी कोड चलाता है। जब तक setup.py पूरी तरह से इसके बारे में भूल हटा दिया जाता है, शायद 2022 तक यह होगा।
सोरिन

2

जैसा कि @ थोमस-लोटेज़ ने उल्लेख किया है, वर्तमान में पाइप टूलींग ऐसा नहीं करता है, क्योंकि इसके अनुरूप कोई विकल्प नहीं है। लेकिन जो मुझे लगता है कि मैं ~ / .लोकल / बिन में जांच कर सकता हूं और विशिष्ट पाइप # के लिए देख सकता हूं। # जो मुझे ऐसा दिखता है जैसे वह --user विकल्प से मेल खाती है।

मेरे मामले में:

antho@noctil: ~/.l/bin$ pwd
/home/antho/.local/bin
antho@noctil: ~/.l/bin$ ls pip*
pip  pip2  pip2.7  pip3  pip3.5

और फिर बस विशिष्ट पाइप संस्करण के साथ स्थापना रद्द करें।


stackoverflow.com/a/11250821/14420 स्नान स्थापना के लिए नुस्खा देखने के लिए, जैसे ./pip2 freeze | grep -v "^-e" | xargs pip uninstall -yसंपादन योग्य मोड में स्थापित पैकेजों को छोड़कर सब कुछ के लिए
मैट wilkie

0

मैं एनाकोंडा संस्करण 4.3.22 और एक पायथन 3.6.1 पर्यावरण चला रहा हूं, और यह समस्या थी। यहाँ इतिहास और तय है:

pip uninstall opencv-python # -- the original step. failed.

ImportError: DLL load failed: The specified module could not be found.

मैंने इसे अपने python3.6 परिवेश में किया और यह त्रुटि मिली।

python -m pip install opencv-python # same package as above.
conda install -c conda-forge opencv # separate install parallel to opencv
pip-install opencv-contrib-python # suggested by another user here. doesn't resolve it.

अगला, मैंने python3.6 डाउनलोड करने और फ़ोल्डर में और विभिन्न फ़ोल्डरों में python3.dll डालने का प्रयास किया। कुछ नहीं बदला।

आखिरकार, यह तय हो गया:

pip uninstall opencv-python

(अन्य कोंडा-फोर्ज संस्करण अभी भी स्थापित है) यह केवल कोंडा संस्करण बचा है, और यह 3.6 में काम करता है।

>>>import cv2
>>>

काम कर रहे!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.