วิธีถอนการติดตั้งแพ็คเกจที่ติดตั้งด้วย pip install --user


219

มี--userตัวเลือกสำหรับ pip ซึ่งสามารถติดตั้งแพ็คเกจ Python ต่อผู้ใช้:

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

ฉันใช้ตัวเลือกนี้เพื่อติดตั้งแพ็กเกจบนเซิร์ฟเวอร์ที่ฉันไม่สามารถเข้าถึงรูทได้ สิ่งที่ฉันต้องการตอนนี้คือการถอนการติดตั้งแพ็คเกจที่ติดตั้งบนผู้ใช้ปัจจุบัน ฉันพยายามรันคำสั่งนี้:

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

แต่ฉันได้:

no such option: --user

ฉันจะถอนการติดตั้งแพ็กเกจที่ฉันติดตั้งด้วยpip install --userนอกเหนือจากการค้นหาและลบแพ็คเกจด้วยตนเองได้อย่างไร

ฉันพบบทความนี้แล้ว

pip ไม่สามารถถอนการติดตั้งจากไดเรกทอรีไซต์แพคเกจต่อผู้ใช้

ซึ่งอธิบายว่าการถอนการติดตั้งแพคเกจจากไดเรกทอรีผู้ใช้ไม่รองรับ อ้างอิงจากบทความถ้ามันถูกนำไปใช้อย่างถูกต้องแล้วด้วย

pip uninstall [package-name]

แพ็คเกจที่ติดตั้งจะถูกค้นหาในไดเรกทอรีผู้ใช้ด้วย แต่ปัญหายังคงอยู่สำหรับฉัน จะทำอย่างไรถ้ามีการติดตั้งแพ็คเกจเดียวกันทั้งระบบและต่อผู้ใช้ เกิดอะไรขึ้นถ้ามีคนต้องการกำหนดเป้าหมายไดเรกทอรีผู้ใช้เฉพาะ


1
ไม่คุณต้องตั้งค่า virtualenv หนึ่งรายการต่อผู้ใช้: กลุ่มและให้สิทธิ์ระบบที่เหมาะสมไปยังโฟลเดอร์ที่บรรจุ
danius

3
ไม่มีวิธีติดตั้งแพ็กเกจทั้งระบบสำหรับผู้ใช้ทั้งหมดจากนั้นเลือกถอนการติดตั้งสำหรับผู้ใช้บางราย หากติดตั้งแพคเกจ--userแล้วถอนการติดตั้งโดยไม่--userทำสิ่งที่คุณต้องการ
tripleee

@tripleee: ฉันไม่มีระบบการอนุญาตที่กว้างและไม่ต้องการฉันเพียงแค่ต้องถอนการติดตั้งต่อผู้ใช้ปัจจุบัน
Serjik

1
กำหนดว่าไดเรกทอรีใดที่คุณไม่มีสิทธิ์ในการลบและแก้ไขสิทธิ์หรือย้ายไปด้านข้างด้วยตนเอง
tripleee

คำตอบ:


196

หลังจากทดสอบโดยใช้ Python 3.5 และ pip ​​7.1.2 บน Linux แล้วสถานการณ์จะเป็นดังนี้:

  • pip install --user somepackageติดตั้ง$HOME/.localและถอนการติดตั้งใช้งานpip uninstall somepackageได้

  • สิ่งนี้เป็นจริงไม่ว่าจะsomepackageถูกติดตั้งทั้งระบบในเวลาเดียวกันหรือไม่ก็ตาม

  • หากแพ็คเกจถูกติดตั้งที่ทั้งสองแห่งจะมีการถอนการติดตั้งเฉพาะที่เท่านั้น หากต้องการถอนการติดตั้งแพ็กเกจทั้งระบบpipให้ถอนการติดตั้งแบบโลคัลก่อนจากนั้นรันคำสั่งถอนการติดตั้งเดิมอีกครั้งพร้อมrootสิทธิ์

  • นอกจากนี้ยังมีผู้ใช้ที่กำหนดไว้ล่วงหน้าติดตั้งไดเรกทอรีจะติดตั้งแพคเกจลงpip install --target somedir somepackage ไม่มีทางที่จะถอนการติดตั้งแพคเกจจากสถานที่ดังกล่าวใช้ไม่เป็นsomedir pip(แต่มีคำขอดึงแบบไม่มีการดึงที่ค่อนข้างเก่าบน Github ที่ใช้งานpip uninstall --target)

  • เนื่องจากสถานที่เดียวเท่านั้นที่pipจะถอนการติดตั้งนั้นเป็นระบบทั่วทั้งระบบและกำหนดไว้ล่วงหน้าสำหรับผู้ใช้ในพื้นที่คุณจึงต้องเรียกใช้pip uninstallในฐานะผู้ใช้ที่เกี่ยวข้องเพื่อถอนการติดตั้งจากไดเรกทอรีการติดตั้งท้องถิ่นของผู้ใช้


2
ข้อความเหล่านี้ถูกต้องสำหรับการใช้ pip ภายในสภาพแวดล้อมเสมือนจริงหรือไม่?
kbolino

ในกรณีของฉันการถอนการติดตั้งไม่ทำงานสำหรับแพคเกจ pip 9.0.1 ยังคงติดตั้งไว้ที่ HOME /./ local
Genom

2
ดูเหมือนว่าจุดที่ 2 จะไม่เป็นจริงในระบบของฉัน ฉันjediติดตั้งแพคเกจระบบ/usr/lib64/python2.7/site-packages/แล้ว เมื่อฉันทำในฐานะผู้ใช้ทั่วไป: pip install --user jedi จากนั้นpip uninstall jedipip พยายามถอนการติดตั้ง/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

ตรงกับที่นี่เหมือนกัน @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ไม่ถูกต้องใน env เสมือนจริงpipเนื่องจากตำแหน่งผู้ใช้ไม่สมเหตุสมผลสำหรับสภาพแวดล้อมเสมือนจริง


3
สายเกินไป!, ฉันใช้--userใน env เสมือนจริง, มีวิธีที่จะคืนค่าได้หรือpip listไม่เพราะไม่ทำงาน ....
jnfran92

2
'และดูเหมือนว่าข้อสรุปในปัจจุบันคือ: - ผู้ใช้ไม่ถูกต้องภายใน pip เสมือนของ env เนื่องจากตำแหน่งผู้ใช้ไม่สมเหตุสมผลสำหรับสภาพแวดล้อมเสมือนจริง' ตกลง การติดตั้งของผู้ใช้เอาชนะจุดประสงค์ทั้งหมดของสภาพแวดล้อมเสมือนจริง น่าเสียดายที่มีตัวอย่างที่ไม่ดีมากมายของคนที่ทำสิ่งนี้
สตีเฟ่นบ๊อช

5

ฉันคิดว่าเป็นไปได้ที่จะถอนการติดตั้งแพ็กเกจที่ติดตั้งด้วย--userค่าสถานะ อันนี้ใช้ได้สำหรับฉัน;

pip freeze --user | xargs pip uninstall -y

สำหรับ python 3

pip3 freeze --user | xargs pip3 uninstall -y

แต่อย่างใดคำสั่งเหล่านี้ไม่ถอนการติดตั้ง setuptools และ pip หลังจากคำสั่งเหล่านั้น (ถ้าคุณต้องการ clean python จริง ๆ ) คุณสามารถลบมันด้วย;

pip uninstall setuptools && pip uninstall pip


2
นี่เป็นทางออกที่สง่างามที่ทำงานได้ดีสำหรับฉัน
สตีเฟ่นบ๊อช

2

คำตอบคือเป็นไปไม่ได้เลย คุณต้องลบมันด้วยตนเอง


ขณะติดตั้งแพคเกจก็มีการย้อนกลับ ถอนการติดตั้งไม่เคยทำงานหลังจากนั้น
syam

ฉันจะแสดงรายการไฟล์ pip ทั้งหมดที่ติดตั้งไว้สำหรับแพ็คเกจที่กำหนดได้อย่างไร (เพื่อให้สามารถลบออกได้)
AstroFloyd

เป็นไปไม่ได้อย่างมีประสิทธิภาพเนื่องจาก pip ใช้ setup.py ซึ่งใช้งานรหัสภายนอก จนกว่า setup.py จะถูกลบอย่างสมบูรณ์ลืมเกี่ยวกับมันอาจจะภายในปี 2022 มันจะเป็น
โซริน

2

ตามที่ @ thomas-lotze ได้กล่าวถึงการใช้ pip ในปัจจุบันไม่ได้ทำเช่นนั้นเนื่องจากไม่มีตัวเลือก --user ที่สอดคล้องกัน แต่สิ่งที่ฉันพบคือฉันสามารถเช็คอิน ~ / .local / bin และค้นหา pip #. # ที่เฉพาะเจาะจงซึ่งดูเหมือนว่าฉันจะตรงกับตัวเลือก --user

ในกรณีของฉัน:

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

จากนั้นเพียงถอนการติดตั้งด้วย pip เวอร์ชั่นเฉพาะ


stackoverflow.com/a/11250821/14420เพื่อดูสูตรสำหรับการถอนการติดตั้งอ่างอาบน้ำเช่น./pip2 freeze | grep -v "^-e" | xargs pip uninstall -yทุกอย่างยกเว้นแพ็คเกจที่ติดตั้งในโหมดที่แก้ไขได้
matt wilkie

0

ฉันใช้งาน Anaconda เวอร์ชั่น 4.3.22 และสภาพแวดล้อม python3.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

(เวอร์ชั่น conda-forge อื่นยังคงติดตั้งอยู่) เหลือเพียงเวอร์ชัน conda เท่านั้นและใช้งานได้ใน 3.6

>>>import cv2
>>>

การทำงาน!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.