ฉันจะลบแพ็กเกจที่ติดตั้งด้วย easy_install ของ Python ได้อย่างไร


704

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

วิธีที่ดีที่สุดในการค้นหาสิ่งที่ติดตั้งคืออะไรและวิธีที่ดีที่สุดในการลบแพ็กเกจที่ติดตั้งคืออะไร? มีไฟล์ใดบ้างที่จำเป็นต้องอัพเดตหากฉันลบแพ็คเกจด้วยตนเอง (เช่นโดยrm /usr/local/lib/python2.6/dist-packages/my_installed_pkg.eggหรือคล้ายกัน)?


67
โพสต์นี้มีอายุเกือบ 2 ปีในขณะที่ฉันเขียนความคิดเห็นนี้ ตอนนี้ pip สามารถแทนที่ easy_install ได้อย่างมีประสิทธิภาพและสามารถลบแพ็คเกจ (รวมไข่) ที่ติดตั้งโดยหลังได้อย่างถูกต้องและเรียบร้อย โปรดตรวจสอบให้แน่ใจว่าได้ยกเลิกคำตอบที่แนะนำแล้ว
Michael Ekoka

53
ขัดว่าสิ่งที่เรียกว่า"easy_install" - ไม่A:มีคู่กันeasy_uninstallหรือb:รำคาญที่จะพูดถึงวิธีการหนึ่งที่สามารถทำได้ใน--help- boggles ใจของฉัน / _infuriates จิตวิญญาณของฉัน / เศร้าหัวใจของฉัน
Alex Gray

13
@ เช่นนั้นถ้าฉันพยายามถอนการติดตั้ง pip (:
mccc

คำตอบ:


621

pipทางเลือกสำหรับ setuptools / easy_install จัดเตรียมคำสั่ง "ถอนการติดตั้ง"

ติดตั้ง pip ตามคำแนะนำในการติดตั้ง :

$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py

จากนั้นคุณสามารถใช้pip uninstallเพื่อลบแพ็คเกจที่ติดตั้งด้วยeasy_install


25
หากคุณมีปัญหาในการถอนการติดตั้งโมดูลด้วย pip ตรวจสอบให้แน่ใจว่าการติดตั้ง pip ของคุณเป็นปัจจุบันแล้ว: pip install -U pip # นั่นเป็นตัวพิมพ์ใหญ่ U
Michael Ekoka

4
pip ใช้สำหรับฉันในการถอนการติดตั้งแพ็คเกจที่ติดตั้ง easy_install ฉันต้องเรียกใช้ 'pip uninstall <package>' หลายครั้งเพื่อลบแพ็คเกจทุกรุ่น ดังนั้นจงจำไว้ มันยังลบแพ็กเกจที่ติดตั้ง 'พัฒนา' ซึ่งเป็นระเบียบดังนั้น
DragonFax

2
แต่คุณจะลบแพ็คเกจที่ไม่ทำงานได้อย่างไร
CrazyGeek

7
ฉันใช้ easy_install เพื่อติดตั้ง pip เพื่อถอนการติดตั้ง easy_install ติดตั้ง

2
คำตอบที่บอกว่า "ติดตั้ง pip" แต่จริง pip ดูเหมือนว่าจะมาในตัวกับงูหลามที่ทันสมัย
Edward

188

หากต้องการถอนการติดตั้ง.eggคุณต้องrm -rfใช้ไข่ (อาจเป็นไดเรกทอรี) และลบบรรทัดที่ตรงกันออกsite-packages/easy-install.pth


18
ตัวpipจัดการแพ็คเกจที่ใหม่กว่ามีคุณสมบัติถอนการติดตั้ง
joeforker

ฉันค้นหา pip ดีกว่าแล้วถอนการติดตั้งเนื่องจาก pip ติดตั้งจากแหล่งต่างๆ หากคุณมี Win7 64 บิตใหม่เอี่ยมฉันมันจะช่วยให้วันของคุณดีขึ้น :)
daitangio

6
การใช้งานบางอย่างติดอยู่กับ pip รุ่นเก่าที่ไม่มีตัวเลือกในการถอนการติดตั้งดังนั้นคำตอบนี้ยังคงคุ้มค่า
ทำเครื่องหมาย Pitchless

5
น่าจะเป็นมูลค่าการกล่าวขวัญว่าวิธีนี้อาจทำให้หลงทางdata_filesและscripts(และอาจเป็นประเภทไฟล์อื่น ๆ ) ในระบบ ไข่ของEGG-INFO/SOURCES.txtมีรายชื่อของทุกpackageไฟล์และsourcesแต่ไม่ได้data_filesซึ่งสามารถติดตั้งลงในไดเรกทอรีโดยพลการใด ๆ ในระบบของคุณ ...
อเล็กซ์กรอง

pip ไม่ได้ลบการติดตั้ง easy_install ทั้งหมดเสมอไป นี่เป็นประสบการณ์เล็กน้อยที่เพิ่งเกิดขึ้นกับฉันซึ่ง pip ไม่สามารถถอนการติดตั้งหนึ่งในโมดูลของฉัน ฉันต้องลบบรรทัดที่ตรงกันออกจาก site-packages / easy-install.pth เพื่อถอนการติดตั้งอย่างสมบูรณ์
ychaouche

158

ก่อนอื่นคุณต้องรันคำสั่งนี้:

$ easy_install -m [PACKAGE]

มันเอาการอ้างอิงทั้งหมดของแพคเกจ

จากนั้นลบไฟล์ไข่ของแพ็คเกจนั้น:

$ sudo rm -rf /usr/local/lib/python2.X/site-packages/[PACKAGE].egg

1
อ่านเอกสารเพิ่มเติมได้ที่นี่: peak.telecommunity.com/DevCenter/ …
GiDo

-mไม่ใช่คำสั่ง easy_install ที่เหมาะสมในการลบสิ่งใดก็ตามที่ฉันสามารถบอกได้ แต่คำตอบนี้ให้ตำแหน่งที่สำคัญของแพ็คเกจ easy_install ที่คำตอบอื่นไม่ทำ rm -rf /usr/local/lib/python*ก่อนที่จะมีการติดตั้ง pip คือวิธีที่จะไปมันดูเหมือนว่าฉัน
fuzzyTew

55

ข้อมูลทั้งหมดอยู่ในคำตอบอื่น ๆ แต่ไม่มีใครสรุปทั้งคำขอของคุณหรือดูเหมือนจะทำให้ทุกอย่างซับซ้อนโดยไม่จำเป็น:

  • สำหรับความต้องการกำจัดของคุณใช้:

    pip uninstall <package>

    (ติดตั้งโดยใช้easy_install pip)

  • สำหรับความต้องการ 'แพ็คเกจที่ติดตั้งรายการ' ของคุณต้องใช้:

    pip freeze

    หรือ:

    yolk -l

    ซึ่งสามารถแสดงรายละเอียดแพ็คเกจเพิ่มเติมได้

    (ติดตั้งผ่านeasy_install yolkหรือpip install yolk)


หลังจากทำงานyolk -lฉันเห็นว่าฉันมีแพ็คเกจที่ซ้ำกันเช่น "scipy -0.11.0 -non-active development" และ "scipy -0.14.0 ... -active development" ฉันจะถอนการติดตั้งแพคเกจการพัฒนาที่ไม่ทำงานเหล่านี้ได้อย่างไร?
bobbyjoe93

2
นี่เป็นสิ่งที่ดียกเว้นฉันต้องการถอนการติดตั้ง pip ที่ติดตั้งโดย easy_install นี่เป็นเพราะมันลงเอยด้วยการติดตั้งสำหรับรุ่น Python ที่ไม่ถูกต้อง
Nagev

28

มีหลายแหล่งบนเน็ตที่แนะนำให้แฮ็กโดยการติดตั้งแพ็กเกจใหม่ด้วยตัวเลือก -m แล้วเพียงแค่ลบไฟล์ .egg ใน lib / และไบนารีใน bin / นอกจากนี้การสนทนาเกี่ยวกับปัญหา setuptools นี้สามารถพบได้ในตัวติดตามข้อผิดพลาดหลามเป็นปัญหา setuptools 2121

แก้ไข: เพิ่มลิงค์ไปยัง python bugtracker


2
ขอบคุณสำหรับข้อมูลนี้ สำหรับการอ้างอิงของผู้อื่นนี่คือลิงค์ไปยังปัญหาที่คุณกล่าวถึง: bugs.python.org/setuptools/issue21
ire_and_curses

25

ถ้าปัญหาคือการแกล้งร้ายแรงพอที่จะให้คุณคุณอาจพิจารณาvirtualenv จะช่วยให้คุณสร้างสภาพแวดล้อมที่แค็ปซูลห้องสมุดงูหลาม คุณติดตั้งแพคเกจที่นั่นแทนที่จะอยู่ในไดเรกทอรีเว็บไซต์ทั่วโลกแพคเกจ สคริปต์ใด ๆ ที่คุณเรียกใช้ในสภาพแวดล้อมนั้นสามารถเข้าถึงแพ็คเกจเหล่านั้นได้ ฉันใช้สิ่งนี้มากเมื่อประเมินแพ็คเกจที่ฉันไม่แน่ใจว่าฉันต้องการ / จำเป็นต้องติดตั้งทั่วโลก หากคุณตัดสินใจว่าไม่ต้องการแพคเกจมันเป็นเรื่องง่ายพอที่จะทำให้ระบบเสมือนนั้นหายไป มันค่อนข้างใช้งานง่าย สร้าง env ใหม่:

$>virtualenv /path/to/your/new/ENV

virtual_envt ติดตั้ง setuptools ให้คุณในสภาพแวดล้อมใหม่ดังนั้นคุณสามารถทำได้:

$>ENV/bin/easy_install

คุณสามารถสร้างสคริปต์เพิ่มของคุณเองที่ตั้งค่าสภาพแวดล้อมใหม่ของคุณ ดังนั้นด้วยหนึ่งคำสั่งคุณสามารถสร้าง virtual env ใหม่ด้วย, พูด, python 2.6, psycopg2 และ django ที่ติดตั้งโดยค่าเริ่มต้น (คุณสามารถติดตั้ง python เฉพาะรุ่น env ได้หากคุณต้องการ)


$> คืออะไร นั่นคือพรอมต์ใช่ไหม การแก้ไขให้กับ $ อาจมีประโยชน์มากกว่านี้ไหม ขอบคุณ
Grey

19

คำแนะนำอย่างเป็นทางการ (?): http://peak.telecommunity.com/DevCenter/EasyInstall#uninstalling-packages

หากคุณได้แทนที่แพ็กเกจด้วยเวอร์ชันอื่นคุณสามารถลบแพ็คเกจที่คุณไม่ต้องการได้ด้วยการลบไฟล์ Package Directory-versioninfo.egg หรือไดเรคทอรี่ (พบในไดเรกทอรีการติดตั้ง)

หากคุณต้องการลบแพ็คเกจที่ติดตั้งอยู่ในปัจจุบัน (หรือแพ็คเกจทั้งหมด) คุณควรรันครั้งแรก:

easy_install -mxN PackageName

วิธีนี้จะช่วยให้มั่นใจได้ว่า Python จะไม่ค้นหาแพ็คเกจที่คุณต้องการลบต่อไป หลังจากทำสิ่งนี้แล้วคุณสามารถลบไฟล์หรือไดเรกทอรี .egg ได้อย่างปลอดภัยพร้อมกับสคริปต์ที่คุณต้องการลบ


บางสิ่งบางอย่างไม่เคยเปลี่ยนดูเหมือนว่า! PIP ปฏิเสธที่จะติดตั้งปลั๊กอินแฮ็ค TRAC (ผู้ดูแลระบบ trac), งาน easy_install เท่านั้น แต่ฉันตั้งใจติดตั้งรุ่นเก่า และ easy_install ไม่สามารถแก้ไขได้จาก https url สำหรับโครงการ ดังนั้นฉันใช้ PIP เพื่อลบมัน แต่หลังจากติดตั้ง TRAC ใหม่ไม่เห็นปลั๊กอิน ดังนั้นฉันจะใช้ข้อมูลที่นี่เพื่อแยก pkg และลบมันด้วยตนเองจากนั้นติดตั้งใหม่ ต๊าย (python 2.7)
Richard Cooke


7

yolk -lไปยังรายการติดตั้งแพคเกจหลามคุณสามารถใช้ คุณจะต้องใช้easy_install yolkก่อน


6

มากับคำถามนี้ในขณะที่พยายามถอนการติดตั้งแพ็คเกจ Python แบบสุ่มจำนวนมากที่ติดตั้งอยู่ตลอดเวลา

การใช้ข้อมูลจากชุดข้อความนี้เป็นสิ่งที่ฉันคิดขึ้นมา:

cat package_list | xargs -n1 sudo pip uninstall -y

package_listจะทำความสะอาด (awk) จากpip freezeใน virtualenv

วิธีลบแพ็คเกจ Python เกือบทั้งหมด:

yolk -l | cut -f 1 -d " " | grep -v "setuptools|pip|ETC.." | xargs -n1 pip uninstall -y

<package_list xargs -n1 sudo pip uninstall -yหลีกเลี่ยง UUOC!
Heini Høgnason

3

ฉันพบปัญหาเดียวกันกับ MacOS X Leopard 10.6.blah

วิธีแก้ไขคือทำให้แน่ใจว่าคุณกำลังเรียก MacPorts Python:

sudo port install python26
sudo port install python_select
sudo python_select python26
sudo port install py26-mysql

หวังว่านี่จะช่วยได้


1
อย่างไรก็ตามฉันเปลี่ยนจาก MacPorts ไปเป็น Brew, python ดั้งเดิม 2.7 จาก mac อย่างสมบูรณ์ ติดตั้ง MySQLdb ผ่าน setup_tools
Cmag


1

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

  1. sudo easy_install -m
  2. sudo rm -rf /Library/Python/2.7/site-packages/.egg

Plaform: MacOS High Sierra เวอร์ชั่น 10.13.3


1
คำสั่งแรกสร้างข้อผิดพลาดนี้สำหรับฉัน:error: No urls, filenames, or requirements specified (see --help)
ไมเคิล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.