Làm cách nào để xóa các gói được cài đặt với easy_install của Python?


704

Python easy_installgiúp cài đặt các gói mới cực kỳ thuận tiện. Tuy nhiên, theo như tôi có thể nói, nó không thực hiện các tính năng phổ biến khác của trình quản lý phụ thuộc - liệt kê và xóa các gói đã cài đặt.

Cách tốt nhất để tìm ra những gì đã cài đặt và cách loại bỏ các gói đã cài đặt là gì? Có tập tin nào cần được cập nhật nếu tôi gỡ bỏ các gói theo cách thủ công (ví dụ: bằng rm /usr/local/lib/python2.6/dist-packages/my_installed_pkg.egghoặc tương tự) không?


67
bài viết này đã gần 2 tuổi vào thời điểm tôi đang viết bình luận này. Pip bây giờ thực sự là một sự thay thế cho easy_install và có thể loại bỏ đúng cách và sạch các gói (bao gồm trứng) được cài đặt sau. Vui lòng đảm bảo nâng cấp câu trả lời gợi ý thêm về chủ đề.
Michael Ekoka

53
Oxymoron mà một cái gì đó gọi là "easy_install" - không phải là: có đối tác easy_uninstall, cũng không phải b: bận tâm đến việc làm thế nào người ta có thể làm như vậy trong --help- soi sáng tâm trí tôi / làm tổn thương tâm hồn tôi / làm tôi buồn .
Alex Gray

13
@ giống như những gì nếu tôi đang cố gắng gỡ cài đặt pip? (:
mccc

Câu trả lời:


621

pip , một thay thế cho setuptools / easy_install, cung cấp lệnh "gỡ cài đặt".

Cài đặt pip theo hướng dẫn cài đặt :

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

Sau đó, bạn có thể sử dụng pip uninstallđể loại bỏ các gói được cài đặt vớieasy_install


25
nếu bạn gặp sự cố khi gỡ cài đặt mô-đun bằng pip, hãy đảm bảo rằng bản cài đặt pip của bạn đã được cập nhật: cài đặt pip -U pip # đó là chữ hoa chữ U
Michael Ekoka

4
Pip làm việc cho tôi để gỡ cài đặt gói easy_install đã cài đặt. Tôi đã phải chạy 'gỡ cài đặt pip <gói>' nhiều lần để xóa tất cả các phiên bản của gói. Vì vậy, hãy ghi nhớ điều đó. Nó thậm chí còn gỡ bỏ gói cài đặt 'phát triển', kết quả là một mớ hỗn độn.
DragonFax

2
Nhưng bạn sẽ xóa gói không hoạt động như thế nào
CrazyGeek

7
Tôi đã sử dụng easy_install để cài đặt pip để gỡ cài đặt easy_install.

2
Câu trả lời cho biết "cài đặt pip", nhưng thực tế pip dường như được tích hợp sẵn với Python hiện đại .
Edward

188

Để gỡ cài đặt, .eggbạn cần rm -rftrứng (có thể là một thư mục) và xóa dòng phù hợp khỏisite-packages/easy-install.pth


18
Trình pipquản lý gói mới hơn bao gồm tính năng gỡ cài đặt.
joeforker

Tôi tìm thấy pip tốt hơn sau đó gỡ cài đặt, bởi vì cài đặt pip từ các nguồn. Nếu bạn đã thích tôi một chiếc Win7 64bit hoàn toàn mới, nó sẽ tiết kiệm thời gian của bạn :)
daitangio

6
Một số sử dụng bị kẹt với một phiên bản cũ của pip không có tùy chọn gỡ cài đặt, vì vậy câu trả lời này vẫn có giá trị.
Đánh dấu không giới hạn

5
Có lẽ đáng nói là phương pháp này có thể để lại đi lạc data_filesscripts(và có thể cả các loại tệp khác) trên hệ thống. Trứng EGG-INFO/SOURCES.txtchứa một danh sách tất cả packagecác tệp và sources, nhưng không data_files, có thể được cài đặt vào bất kỳ thư mục tùy ý nào trên hệ thống của bạn ...
Alex Leach

Pip không phải lúc nào cũng loại bỏ tất cả những gì easy_install cài đặt. Đây là một kinh nghiệm nhỏ vừa xảy ra với tôi khi pip không thể gỡ cài đặt một trong các mô-đun của tôi. Tôi đã phải xóa dòng phù hợp khỏi gói-site / easy-install.pth để gỡ cài đặt hoàn toàn.
ychaouche 3/03/2015

158

Đầu tiên bạn phải chạy lệnh này:

$ easy_install -m [PACKAGE]

Nó loại bỏ tất cả các phụ thuộc của gói.

Sau đó loại bỏ tệp trứng của gói đó:

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

1
xem thêm tài liệu tại đây: pic.telecommunity.com/DevCenter/ từ
GiDo

-mkhông phải là lệnh easy_install thích hợp để loại bỏ mọi thứ xa như tôi có thể nói, nhưng câu trả lời này đưa ra vị trí quan trọng của các gói easy_install mà các câu trả lời khác không có. một ưu rm -rf /usr/local/lib/python*tiên để cài đặt pip là cách để tôi thực hiện
fuzzyTew 2/11/2016

55

Tất cả thông tin nằm trong các câu trả lời khác, nhưng không có thông tin nào tóm tắt cả hai yêu cầu của bạn hoặc dường như làm cho mọi thứ trở nên phức tạp không cần thiết:

  • Đối với nhu cầu loại bỏ của bạn sử dụng:

    pip uninstall <package>

    (cài đặt bằng cách sử dụng easy_install pip)

  • Đối với 'danh sách các gói đã cài đặt', bạn cần sử dụng:

    pip freeze

    Hoặc là:

    yolk -l

    có thể xuất ra nhiều chi tiết gói hơn.

    (Cài đặt qua easy_install yolkhoặc pip install yolk)


Sau khi chạy yolk -l, tôi thấy rằng tôi có các gói trùng lặp, chẳng hạn như "phát triển tích cực -0.11.0 -non" và "scipy -0.14.0 ... - phát triển tích cực". Làm cách nào để gỡ cài đặt các gói phát triển không hoạt động này?
bulkjoe93

2
Điều này là tốt ngoại trừ tôi muốn gỡ cài đặt pip đã được cài đặt bởi easy_install. Điều này là do cuối cùng nó đã cài đặt nó cho phiên bản Python sai.
Nagev

28

một số nguồn trên mạng gợi ý hack bằng cách cài đặt lại gói với tùy chọn -m và sau đó chỉ cần xóa tệp .egg trong lib / và nhị phân trong bin /. Ngoài ra, thảo luận về vấn đề setuptools này có thể được tìm thấy trên trình theo dõi lỗi python như vấn đề setuptools 21 .

Chỉnh sửa: Đã thêm liên kết đến bugtracker python.


2
Cảm ơn thông tin này. Đối với tài liệu tham khảo khác, đây là liên kết đến vấn đề mà bạn đã đề cập: bug.python.org/setuptools/su21
ire_and_curses

25

Nếu vấn đề là một sự phiền toái đủ nghiêm trọng đối với bạn, bạn có thể xem xét virtualenv . Nó cho phép bạn tạo một môi trường đóng gói các thư viện python. Bạn cài đặt các gói ở đó thay vì trong thư mục gói toàn cầu. Bất kỳ tập lệnh nào bạn chạy trong môi trường đó đều có quyền truy cập vào các gói đó (và tùy chọn, cả các tập lệnh toàn cầu của bạn). Tôi sử dụng điều này rất nhiều khi đánh giá các gói mà tôi không chắc chắn tôi muốn / cần cài đặt trên toàn cầu. Nếu bạn quyết định không cần gói, thật dễ dàng để thổi bay môi trường ảo đó. Nó khá dễ sử dụng. Tạo một env mới:

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

virtual_envt cài đặt setuptools cho bạn trong môi trường mới, vì vậy bạn có thể làm:

$>ENV/bin/easy_install

Bạn thậm chí có thể tạo các tập lệnh boostrap của riêng bạn để thiết lập môi trường mới của bạn. Vì vậy, với một lệnh, bạn có thể tạo một env ảo mới, giả sử python 2.6, psycopg2 và django được cài đặt theo mặc định (bạn có thể cài đặt phiên bản python dành riêng cho env nếu muốn).


$> Là gì? Đó có phải là một dấu nhắc? Có lẽ sửa thành $ sẽ hữu ích hơn? Cảm ơn
Gray

18

Hướng dẫn chính thức (?): Http://peak.telecommunity.com/DevCenter/PalInstall#uninstalling-packages

Nếu bạn đã thay thế một gói bằng một phiên bản khác, thì bạn chỉ có thể xóa (các) gói bạn không cần bằng cách xóa tệp hoặc thư mục GóiName-versioninfo.egg (tìm thấy trong thư mục cài đặt).

Nếu bạn muốn xóa phiên bản hiện tại của gói (hoặc tất cả các phiên bản của gói), trước tiên bạn nên chạy:

easy_install -mxN PackageName

Điều này sẽ đảm bảo rằng Python không tiếp tục tìm kiếm gói mà bạn dự định xóa. Sau khi thực hiện xong, bạn có thể xóa các tệp hoặc thư mục .egg một cách an toàn, cùng với mọi tập lệnh bạn muốn xóa.


Có vẻ như một số thứ không bao giờ thay đổi! PIP từ chối cài đặt plugin hack TRAC (trac admin), chỉ easy_install hoạt động. Nhưng tôi vô tình cài đặt một phiên bản cũ. Và easy_install không thể sửa lỗi đó từ url https cho dự án. Vì vậy, tôi đã sử dụng PIP để xóa nó, nhưng sau khi cài đặt lại TRAC không thấy plugin. Vì vậy, tôi sử dụng thông tin ở đây để cô lập pkg và xóa thủ công, sau đó cài đặt lại. whew. (trăn 2.7)
Richard Cooke


7

Để liệt kê các gói Python đã cài đặt, bạn có thể sử dụng yolk -l. Bạn sẽ cần phải sử dụng easy_install yolkđầu tiên mặc dù.


6

Đi qua câu hỏi này, trong khi cố gắng gỡ cài đặt nhiều gói Python ngẫu nhiên được cài đặt theo thời gian.

Sử dụng thông tin từ chủ đề này, đây là những gì tôi nghĩ ra:

cat package_list | xargs -n1 sudo pip uninstall -y

package_listđược dọn sạch (awk) từ a pip freezetrong virtualenv.

Để xóa gần như tất cả các gói Python:

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

<package_list xargs -n1 sudo pip uninstall -ytránh một UUOC!
Heini Høgnason

3

Tôi gặp vấn đề tương tự trên MacOS X Leopard 10.6.blah của tôi.

Giải pháp là đảm bảo rằng bạn đang gọi MacPorts Python:

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

Hi vọng điêu nay co ich.


1
Tuy nhiên, tôi đã hoàn toàn chuyển từ MacPorts sang Brew, python bản địa 2.7 từ mac. MySQLdb được cài đặt qua setup_tools
Cmag

3

Đối với tôi chỉ xóa tệp này: easy-install.pth đã hoạt động, phần còn lại cài đặt django == 1.3.7


1

Điều này làm việc cho tôi. Nó tương tự như các câu trả lời trước nhưng đường dẫn đến các gói thì khác.

  1. sudo easy_install -m
  2. sudo rm -rf / Thư viện / Python / 2.7 / site-packages / .egg

Bản đồ: MacOS High Sierra phiên bản 10.13.3


1
Lệnh đầu tiên tạo ra lỗi này cho tôi:error: No urls, filenames, or requirements specified (see --help)
Michael
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.