Cách gỡ cài đặt các gói có thể chỉnh sửa bằng pip (được cài đặt bằng -e)


107

Tôi đã cài đặt một số gói với -e

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

Tôi bị đóng băng pip tôi thấy

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

khi tôi cố gắng gỡ cài đặt các gói, tôi gặp lỗi:

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

> pip uninstall horus
Cannot uninstall requirement horus, not installed

Làm cách nào để gỡ cài đặt một gói như vậy?


pip uninstall <package> gỡ cài đặt các gói được cài đặt ở chế độ có thể chỉnh sửa trong các phiên bản pip gần đây (của tôi là 19.1.1). Đảm bảo sử dụng tên gói trong setup.py, không phải bí danh bạn chỉ định để gọi gói đó trong entry_points
picmate 涅

cho những người sử dụng conda, để gỡ cài đặt ở chế độ nhà phát triển trong conda do:conda develop -u .
Charlie Parker

Bạn đã tìm ra lý do tại sao pip uninstall yourpackagekhông hoạt động? Như lỗi của bạn có nghĩa là gì? Có vẻ đầu ra kỳ lạ từ lệnh ...
Charlie Parker

Bạn đã thử pip uninstall -e .hoặc python setup.py develop -u?
Charlie Parker

2
Đối với tôi pip uninstall librarylàm việc tốt. Nếu bạn đi đến câu trả lời, OP cung cấp có vẻ như có điều gì đó kỳ lạ với thư viện của anh ấy đã bị hỏng. Hy vọng rằng điều này sẽ giúp mọi người tiết kiệm thời gian trong lần tới khi họ đến đây. Tuy nhiên, có nhiều tùy chọn khác nhau có thể hoạt động.
Charlie Parker

Câu trả lời:


90

Tại {virtualenv}/lib/python2.7/site-packages/(nếu không sử dụng virtualenv thì {system_dir}/lib/python2.7/dist-packages/)

  • xóa tệp trứng (ví dụ distribute-0.6.34-py2.7.egg) nếu có
  • khỏi tệp easy-install.pth, xóa dòng tương ứng (nó phải là đường dẫn đến thư mục nguồn hoặc của tệp trứng).

43
Loại ngạc nhiên là không có cách gỡ cài đặt tương ứng cho điều đó.
Drake Guan

4
@Drake có, khá khó chịu thực sự
glarrain

4
Với phiên bản pip hiện tại, việc gỡ cài đặt cũng hoạt động ổn đối với các gói được cài đặt với -etùy chọn.
nổi tiếng

9
cho tôi sử dụng 8.1.2, pip uninstall package_namecông trình, nhưng pip uninstall .không hoạt động
confused00

5
Có một vấn đề mở đối với pip ở đây về khả năng loại bỏ các gói cài đặt có thể chỉnh sửa.
Chris Hunt

22

Một cách dễ dàng hơn để làm điều tương tự với phiên bản setup_tools mới là chạy như sau:

python setup.py develop -u

Về cơ bản, điều này giống với những gì @glarrain mô tả trong câu trả lời của anh ấy.


2
có phải có bất kỳ đầu ra nào cho lệnh đó không? Tôi nhận được thông báo running developnhưng tôi vẫn còn .egg-infotệp ... có giả sử xóa nó không?
Pinocchio

"Phiên bản mới của setup_tools" có câu trả lời này hoạt động là gì? Bạn có thể xác nhận điều này được không?
Charlie Parker

Câu trả lời của bạn có đảm bảo rằng người ta không phải loại bỏ các mảnh mỏng theo cách thủ công không?
Charlie Parker

Nó không tạo ra bất kỳ đầu ra nào. Theo hiểu biết của tôi, nó nên xóa nó: "--gỡ cài đặt, -u Hủy triển khai dự án hiện tại. Bạn có thể sử dụng tùy chọn --install-dir hoặc -d để chỉ định khu vực tổ chức. Tệp .egg-link được tạo sẽ được gỡ bỏ, nếu có và nó vẫn đang trỏ đến thư mục dự án. " từ tài liệu setuptools . Sau khi chạy, nó vẫn tải nội dung từ thư mục phát triển?
Ahmed Shariff

@CharlieParker Tôi không chắc phiên bản này được giới thiệu trong phiên bản nào. Tôi chưa bao giờ phải xóa các tệp này theo cách thủ công.
Ahmed Shariff

10

Cài đặt gói dev sử dụng cmd:

pip install --editable .

Gỡ cài đặt:

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

Bây giờ bạn có thể sử dụng:

pip uninstall package_name 

hoặc python setup.py develop --uninstallhoặcpython setup.py develop -u


4
Bạn có thể chỉ định bạn đang chạy lệnh thứ hai từ đâu được không?
ethanabrooks

1
@ethanabrooks .là thư mục hiện tại, bạn sử dụng đường dẫn tuyệt đối đầy đủ của gói.
Legolas Bloom

1
Chưa hoàn thiện. Điều gì về tất cả các gói Python? ( site-packagesdir)
Jorge Orpinel

Thao tác này không hoàn tác hoàn toàn quá trình cài đặt. Nó xóa nội dung khỏi thư mục mà gói đã được cài đặt từ đó, nhưng không xóa liên kết biểu tượng trong dist-packagesthư mục của bạn (nơi Python tìm kiếm gói đã cài đặt). Sạch hơn để sử dụng python setup.py develop -u.
Mark Amery

@MarkAmery Cảm ơn, pip uninstall package_namelàm việc ngay bây giờ.
Legolas Bloom

6

Đây là một lỗi trên debian / ubuntu linux sử dụng pip được cài đặt hệ điều hành (đối với tôi là v8.1.1), đó là những gì bạn sẽ gọi ra sudo pipngay cả khi bạn đã nâng cấp pip (ví dụ: get-pip.py). Xem https://github.com/pypa/pip/issues/4438

Để thảo luận về cách dọn dẹp, hãy xem /ubuntu/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip , mặc dù các giải pháp có "loại bỏ mọi thứ" đa dạng.

... gói pip [đi] đến /usr/local/lib/python2.7/dist-packagesvà gói apt đối với/usr/lib/python2.7/dist-packages

... một vài gói cũng đã được cài đặt ~/.local/lib.

Đối với hệ thống của tôi, tất cả những gì tôi cần xóa là /usr/local/lib/python2.7/dist-packages/{package_name}.egg-link


Đối với tôi pip uninstall librarylàm việc tốt. Nếu bạn đi đến câu trả lời, OP cung cấp có vẻ như có điều gì đó kỳ lạ với thư viện của anh ấy đã bị hỏng. Hy vọng rằng điều này sẽ giúp mọi người tiết kiệm thời gian trong lần tới khi họ đến đây. Mặc dù vậy, có nhiều lựa chọn khác nhau có thể hoạt động
Charlie Parker

5

Nó chỉ ra rằng cài đặt của tôi đã bị hỏng bằng cách nào đó.

Tôi có thể tìm thấy mục nhập trong:

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

Để giải quyết vấn đề, tôi đã xóa dòng trong tệp .pth bằng tay!

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

1
Điều đó có nghĩa là cài đặt của bạn bị hỏng?
Charlie Parker

-1

Chỉ cần gỡ cài đặt gói bạn đã cài đặt ở chế độ 'có thể chỉnh sửa':

pip uninstall yourpackage

9
OP đã thử điều này và nói như vậy trong câu hỏi của mình. Điều này không nhất thiết phải làm việc với các gói cài đặt như 'chỉnh sửa'
dusktreader

2
@dusktreader: Tôi không chắc chuyện gì đang xảy ra với pip uninstalllệnh của OP (có thể là phiên bản pip đã lỗi thời?), nhưng tôi đã xác minh rằng trong các trường hợp bình thường, nó thực hiện chính xác những gì được đề xuất làm theo cách thủ công trong câu trả lời được chấp nhận bởi @glarrain. Nếu nó không hiệu quả với bạn, vui lòng nêu chi tiết những gì bạn đang làm ở đây để chúng tôi có thể tìm hiểu thêm vấn đề.
Apteryx,

@Apteryx khoan, bạn nói rằng nó hoạt động ngay cả với chế độ có thể chỉnh sửa?
Charlie Parker

Câu trả lời này đã làm việc cho tôi. Tôi nghĩ rằng nó không hoạt động cho OP vì nếu bạn kiểm tra câu trả lời của anh ấy, anh ấy đã có một số cài đặt bị hỏng kỳ lạ (hoặc máy tính của anh ấy ở trạng thái kỳ lạ). pip uninstall pkghoạt động afaik.
Charlie Parker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.