วิธีถอนการติดตั้งแพ็คเกจที่แก้ไขได้ด้วย pip (ติดตั้งด้วย -e)


110

ฉันได้ติดตั้งแพ็คเกจบางอย่างด้วย -e

> pip install -e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev

ฉันเห็นจุดหยุดนิ่ง

> pip freeze
...
-e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev
...

เมื่อฉันพยายามถอนการติดตั้งแพ็คเกจฉันได้รับข้อผิดพลาด:

> pip uninstall horus-dev
Cannot uninstall requirement horus-dev, not installed

> pip uninstall horus
Cannot uninstall requirement horus, not installed

ฉันจะถอนการติดตั้งแพ็คเกจดังกล่าวได้อย่างไร?


1
pip uninstall <package> ถอนการติดตั้งแพ็คเกจที่ติดตั้งในโหมดแก้ไขได้ใน pip เวอร์ชันล่าสุด (ของฉันคือ 19.1.1) ตรวจสอบให้แน่ใจว่าใช้ชื่อแพ็กเกจใน setup.py ไม่ใช่นามแฝงที่คุณระบุเพื่อเรียกแพ็คเกจนั้นใน entry_points
picmate 涅

สำหรับผู้ที่ใช้ conda ให้ถอนการติดตั้งในโหมด dev ใน conda do:conda develop -u .
Charlie Parker

คุณคิดออกหรือpip uninstall yourpackageไม่ว่าเหตุใดจึงไม่ทำงาน เช่นเดียวกับความหมายของข้อผิดพลาดของคุณ? ดูเหมือนผลลัพธ์ที่แปลกจากคำสั่ง ...
Charlie Parker

คุณลองpip uninstall -e .หรือยังpython setup.py develop -u?
Charlie Parker

2
สำหรับฉันpip uninstall libraryทำงานได้ดี หากคุณไปที่คำตอบ OP ให้ดูเหมือนว่ามันมีอะไรแปลก ๆ กับห้องสมุดของเขาที่เสียหาย หวังว่าจะช่วยประหยัดเวลาคนมาที่นี่ในครั้งต่อไป แม้ว่าจะมีตัวเลือกต่างๆมากมายที่อาจได้ผล
Charlie Parker

คำตอบ:


92

ที่{virtualenv}/lib/python2.7/site-packages/(ถ้าไม่ใช้ Virtualenv แล้ว{system_dir}/lib/python2.7/dist-packages/)

  • ลบไฟล์ไข่ (เช่นdistribute-0.6.34-py2.7.egg) ถ้ามี
  • จากไฟล์easy-install.pthลบบรรทัดที่เกี่ยวข้อง (ควรเป็นพา ธ ไปยังไดเร็กทอรีต้นทางหรือไฟล์ egg)

44
น่าแปลกใจที่ไม่มีวิธีถอนการติดตั้งที่เกี่ยวข้องสำหรับสิ่งนั้น
Drake Guan

4
@Drake ใช่น่ารำคาญจริง ๆ
กลาเรน

4
ด้วยเวอร์ชัน pip ปัจจุบันการถอนการติดตั้งก็ใช้ได้เช่นกันสำหรับแพ็คเกจที่ติดตั้งด้วย-eตัวเลือก
famousgarkin

10
สำหรับฉันที่ใช้ 8.1.2 ใช้pip uninstall package_nameงานได้ แต่pip uninstall .ใช้งานไม่ได้
สับสน

5
มีปัญหาที่เปิดอยู่กับ pip ที่นี่สำหรับความสามารถในการลบแพ็คเกจที่ติดตั้งที่แก้ไขได้
Chris Hunt

24

วิธีที่ง่ายกว่าในการทำเช่นเดียวกันกับ setup_tools เวอร์ชันใหม่คือการเรียกใช้สิ่งต่อไปนี้:

python setup.py develop -u

ซึ่งโดยพื้นฐานแล้วจะเหมือนกับที่ @glarrain อธิบายไว้ในคำตอบของเขา


2
ควรจะมีเอาต์พุตสำหรับคำสั่งนั้นหรือไม่? ฉันเข้าใจว่าrunning developแต่ฉันยังคงเป็น.egg-infoไฟล์อยู่ ... คิดว่าจะลบออกหรือไม่?
Pinocchio

"setup_tools เวอร์ชันใหม่" ที่มีคำตอบนี้ทำงานอย่างไร คุณช่วยยืนยันได้ไหม
Charlie Parker

คำตอบของคุณรับประกันได้หรือไม่ว่าไม่จำเป็นต้องถอดทินเนอร์ออกด้วยตนเอง?
Charlie Parker

มันไม่ได้สร้างผลลัพธ์ใด ๆ ตามความเข้าใจของฉันมันควรลบมัน: "--uninstall, -u Un-deploy project ปัจจุบันคุณสามารถใช้อ็อพชัน --install-dir หรือ -d เพื่อกำหนดพื้นที่การจัดเตรียมไฟล์. egg-link ที่สร้างขึ้นจะ จะถูกลบออกหากมีอยู่และยังคงชี้ไปที่ไดเรกทอรีโครงการ " จากsetuptools เอกสาร หลังจากรันสิ่งนี้ยังคงโหลดเนื้อหาจากไดเร็กทอรีการพัฒนาหรือไม่
Ahmed Shariff

@CharlieParker ฉันไม่แน่ใจว่าเวอร์ชันนี้ถูกนำมาใช้ในเวอร์ชันใดฉันไม่เคยต้องลบไฟล์เหล่านี้ด้วยตนเอง
Ahmed Shariff

10

ติดตั้งแพ็คเกจ dev โดยใช้ cmd:

pip install --editable .

ถอนการติดตั้ง:

rm -r $(find . -name '*.egg-info')

ตอนนี้คุณสามารถใช้:

pip uninstall package_name 

หรือpython setup.py develop --uninstallหรือpython setup.py develop -u


4
คุณสามารถระบุได้ไหมว่าคุณกำลังเรียกใช้คำสั่งที่สองจากที่ใด
ethanabrooks

1
@ethanabrooks .คือไดเร็กทอรีปัจจุบันคุณใช้พา ธ สัมบูรณ์แบบเต็มของแพ็คเกจ
Legolas Bloom

1
ไม่สมบูรณ์ แล้วแพ็คเกจ Python ทั้งหมดล่ะ? ( site-packagesผบ.)
Jorge Orpinel

การดำเนินการนี้ไม่ได้เป็นการยกเลิกการติดตั้งอย่างสมบูรณ์ มันจะลบข้อมูลจากโฟลเดอร์ที่ติดตั้งแพ็คเกจ แต่ไม่ลบ symlink ในdist-packagesไดเร็กทอรีของคุณ(โดยที่ Python มองหาแพ็คเกจที่ติดตั้ง) Cleaner python setup.py develop -uเพื่อการใช้งาน
Mark Amery

@MarkAmery ขอบคุณpip uninstall package_nameทำงานตอนนี้
Legolas Bloom

6

นี่เป็นข้อผิดพลาดบน debian / ubuntu linux โดยใช้ pip ที่ติดตั้งระบบปฏิบัติการ (v8.1.1 สำหรับฉัน) ซึ่งเป็นสิ่งที่คุณจะเรียกใช้sudo pipแม้ว่าคุณจะอัปเกรด pip แล้ว (เช่น get-pip.py) ดูhttps://github.com/pypa/pip/issues/4438

สำหรับการสนทนาเกี่ยวกับวิธีทำความสะอาดโปรดดูที่/ubuntu/173323/how-do-i-detect-and-remove-python-packages-installed-via-pipแม้ว่าจะมีวิธีแก้ปัญหาอยู่ก็ตาม "ลบทุกอย่าง" หลากหลาย

... แพ็กเกจ pip [go] ถึง/usr/local/lib/python2.7/dist-packagesและ apt package to/usr/lib/python2.7/dist-packages

... มีการติดตั้งแพ็คเกจบางส่วนไว้~/.local/libด้วย

สำหรับระบบของฉันสิ่งที่ฉันต้องลบคือ /usr/local/lib/python2.7/dist-packages/{package_name}.egg-link


สำหรับฉันpip uninstall libraryทำงานได้ดี หากคุณไปที่คำตอบ OP ให้ดูเหมือนว่ามันมีอะไรแปลก ๆ กับห้องสมุดของเขาที่เสียหาย หวังว่าจะช่วยประหยัดเวลาคนมาที่นี่ในครั้งต่อไป แม้ว่าจะมีตัวเลือกต่างๆมากมายที่อาจใช้ได้ผล
Charlie Parker

5

ปรากฎว่าการติดตั้งของฉันเสียหายอย่างใด

ฉันสามารถค้นหารายการใน:

/usr/local/lib/python2.7/site-packages/easy-install.pth

เพื่อแก้ปัญหาฉันลบบรรทัดในไฟล์. pth ด้วยมือ!

import sys; sys.__plen = len(sys.path)
...
/absolute-path-to/horus  # <- I removed this line
...

1
การติดตั้งของคุณเสียหายหมายความว่าอย่างไร
Charlie Parker

-1

เพียงถอนการติดตั้งแพ็คเกจที่คุณติดตั้งในโหมด 'แก้ไขได้':

pip uninstall yourpackage

9
OP ได้ลองทำสิ่งนี้และพูดในคำถามของเขา สิ่งนี้ไม่จำเป็นต้องใช้กับแพ็คเกจที่ติดตั้งเป็น "แก้ไขได้"
dusktreader

2
@dusktreader: ฉันไม่แน่ใจว่าเกิดอะไรขึ้นกับpip uninstallคำสั่งของ OP (อาจเป็น pip รุ่นที่ล้าสมัยหรือไม่) แต่ฉันได้ตรวจสอบแล้วว่าภายใต้สถานการณ์ปกติมันทำสิ่งที่แนะนำให้ทำด้วยตนเองในคำตอบที่ยอมรับโดย @glarrain หากไม่ได้ผลสำหรับคุณโปรดระบุรายละเอียดว่าคุณกำลังทำอะไรอยู่ที่นี่เพื่อที่เราจะได้เจาะลึกปัญหาต่อไป
Apteryx

@Apteryx รอคุณบอกว่าใช้งานได้แม้ในโหมดแก้ไขได้หรือไม่?
Charlie Parker

คำตอบนี้ใช้ได้ผลสำหรับฉัน ฉันคิดว่ามันใช้ไม่ได้กับ OP เพราะถ้าคุณตรวจสอบคำตอบของเขาเขามีการติดตั้งที่เสียหายแปลก ๆ (หรือคอมพิวเตอร์ของเขาอยู่ในสถานะแปลก ๆ ) pip uninstall pkgทำงาน afaik
Charlie Parker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.