如何删除使用Python的easy_install安装的软件包?


704

Python easy_install使安装新软件包非常方便。但是,据我所知,它没有实现依赖项管理器的其他常见功能-列出和删除已安装的软件包。

找出已安装的软件包的最佳方法是什么,以及删除已安装软件包的首选方法是什么?如果我手动(例如,通过rm /usr/local/lib/python2.6/dist-packages/my_installed_pkg.egg类似方式)删除软件包,是否需要更新任何文件?


67
在我撰写此评论时,此帖子已接近2岁。pip现在可以有效替代easy_install,并且可以正确干净地删除后者安装的软件包(包括鸡蛋)。请确保在线索下方进一步建议答案。
Michael Ekoka 2011年

53
在矛盾的东西叫做“easy_install的” -没有一个:有一个对口easy_uninstall,也没有B:懒得提一个可以如何做到这一点的--help- 博格尔斯我的心/ _infuriates我的灵魂/伤心我的心脏
Alex Gray

13
@mike如果我要卸载点子怎么办?(:
mccc 2014年

Answers:


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 2011年

4
pip帮我卸载了easy_install已安装的软件包。但是,我必须多次运行“ pip uninstall <package>”,才能删除该软件包的所有版本。所以记住这一点。它甚至删除了一个“ develop”安装的软件包,结果造成了混乱。
DragonFax 2013年

2
但是,您将如何删除非活动软件包
CrazyGeek 2014年

7
我使用easy_install安装pip来卸载easy_install安装。

2
答案是“ install pip”,但实际上pip似乎是由现代Python内置的
爱德华

188

要卸载,.egg您需要rm -rf鸡蛋(可能是目录)并从中删除匹配的行site-packages/easy-install.pth


18
较新的pip软件包管理器包含卸载功能。
joeforker

我发现pip更好,然后卸载,因为pip是从源代码安装的。如果您像我一样拥有全新的Win7 64bit,它将节省您的时间:)
daitangio 2011年

6
一些使用旧版本的pip没有卸载选项,因此它仍然值得。
Mark Pitchless 2012年

5
可能值得一提的是,此方法可能在系统上留下杂散data_filesscripts(可能还有其他文件类别)。鸡蛋EGG-INFO/SOURCES.txt包含所有package文件的列表sources,但不是data_files,可以将其安装到系统上的任意目录中……
Alex Leach

pip并不总是删除所有easy_install安装的内容。这是我的一点经历,pip无法卸载我的模块之一。我必须从site-packages / easy-install.pth中删除匹配的行才能完全将其卸载。
ychaouche 2015年

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*之前安装点子是去它的方式在我看来
fuzzyTew

55

所有的信息在其他的答案,但没有总结两者的请求,或者似乎使事情不必要的复杂性:

  • 对于您的搬迁需求,请使用:

    pip uninstall <package>

    (使用安装easy_install pip

  • 对于“列出已安装的软件包”,需要使用以下任一方法:

    pip freeze

    要么:

    yolk -l

    可以输出更多包装详细信息。

    (通过easy_install yolk或安装pip install yolk


运行之后yolk -l,我发现有重复的软件包,例如“ scipy -0.11.0-非活动开发”和“ scipy -0.14.0 ...-活动开发”。如何卸载这些非活动的开发包?
bobbyjoe93

2
很好,除了我要卸载easy_install安装的pip。这是因为它最终为错误的Python版本安装了它。
Nagev

28

网上有多个消息源建议通过使用-m选项重新安装软件包,然后仅删除lib /中的.egg文件和bin /中的二进制文件来破解。另外,可以在python bug跟踪器上找到有关setuptools问题的讨论,名称为setuptools issue 21

编辑:将链接添加到python bugtracker。


2
感谢您提供此信息。供他人参考,以下是您提到的问题的链接:bugs.python.org/setuptools/issue21
ire_and_curses,2009年

25

如果问题严重困扰您,您可以考虑使用virtualenv。它允许您创建一个封装python库的环境。您在此处而不是在全局site-packages目录中安装软件包。您在该环境中运行的所有脚本都可以访问这些程序包(也可以选择全局程序包)。在评估不确定/是否需要全局安装的软件包时,我经常使用此工具。如果您决定不需要该软件包,那么将虚拟环境吹走就很容易了。它很容易使用。制作一个新的环境:

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

virtual_envt在新环境中为您安装setuptools,因此您可以执行以下操作:

$>ENV/bin/easy_install

您甚至可以创建自己的boostrap脚本来设置新环境。因此,使用一个命令,您可以创建一个新的虚拟环境,例如默认安装了python 2.6,psycopg2和django(如果需要,您可以安装特定于环境的python版本)。


什么是$>?有提示吗?也许更正$会更有帮助?感谢
灰色

18

官方说明?:http : //peak.telecommunity.com/DevCenter/EasyInstall#uninstalling-packages

如果您用其他版本替换了软件包,则可以通过删除PackageName-versioninfo.egg文件或目录(位于安装目录中)来删除不需要的软件包。

如果要删除软件包的当前安装版本(或软件包的所有版本),则应首先运行:

easy_install -mxN PackageName

这样可以确保Python不会继续搜索您打算删除的软件包。完成此操作后,您可以安全地删除.egg文件或目录以及要删除的所有脚本。


有些事情似乎永远不会改变!PIP拒绝安装TRAC hack插件(trac admin),仅easy_install有效。但是我不小心安装了旧版本。easy_install无法从项目的https url修复该问题。所以我用PIP删除了它,但是重新安装TRAC后看不到插件。因此,我在这里使用信息来隔离pkg并手动将其删除,然后重新安装。ew。(python 2.7)
理查德·库克



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!
HeiniHøgnason2011年

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,即Mac的本地python 2.7。通过setup_tools安装MySQLdb
Cmag 2012年


1

这对我有用。它与先前的答案相似,但打包的路径不同。

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

平台:MacOS High Sierra版本10.13.3


1
第一条命令为我产生此错误:error: No urls, filenames, or requirements specified (see --help)
Michael
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.