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

Posted

技术标签:

【中文标题】如何删除使用 Python 的 easy_install 安装的软件包?【英文标题】:How do I remove packages installed with Python's easy_install? 【发布时间】:2010-11-16 22:20:17 【问题描述】:

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

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

【问题讨论】:

在我写这篇评论时,这篇文章已经有将近 2 年的历史了。 pip 现在实际上是 easy_install 的替代品,并且可以正确、干净地删除后者安装的软件包(包括鸡蛋)。请确保对建议的答案进行投票。 所谓 "easy_install" 的矛盾说法 - 没有 a: 对应的 easy_uninstall,也没有 b: 懒得在 --help 中提及如何做到这一点 - 让我大吃一惊 / _激怒我的灵魂 / 让我的心难过​​i>。 @mike 如果我想卸载 pip 怎么办? (: 【参考方案1】:

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

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

平台:MacOS High Sierra 版本 10.13.3

【讨论】:

第一个命令为我产生了这个错误:error: No urls, filenames, or requirements specified (see --help)【参考方案2】:

官方(?)说明: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并手动删除它,然后重新安装。哇。 (python 2.7)【参考方案3】:

pip 是 setuptools/easy_install 的替代品,提供“卸载”命令。

根据installation instructions安装pip:

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

然后您可以使用pip uninstall 删除使用easy_install 安装的软件包

【讨论】:

如果您在使用 pip 卸载模块时遇到问题,请确保您的 pip 安装本身是最新的: pip install -U pip # 那是大写的 U pip 为我卸载了一个 easy_install 安装包。不过,我不得不多次运行 'pip uninstall ' 来删除所有版本的包。所以记住这一点。它甚至删除了一个“开发”安装包,结果有点混乱。 但是如何删除非活动包 我使用easy_install安装pip来卸载easy_install安装。 答案是“安装 pip”,但实际上 pip 似乎是现代 Python 内置的【参考方案4】:

首先你必须运行这个命令:

$ easy_install -m [PACKAGE]

它会删除包的所有依赖项。

然后删除那个包的 egg 文件:

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

【讨论】:

更多文档在这里:peak.telecommunity.com/DevCenter/… -m 据我所知,这不是删除任何内容的正确easy_install 命令,但这个答案给出了其他答案没有的easy_install 包的关键位置。在我看来,安装 pip 之前的 rm -rf /usr/local/lib/python* 是可行的方法【参考方案5】:

我只删除这个文件:easy-install.pth 工作,休息 pip install django==1.3.7

【讨论】:

【参考方案6】:

要列出已安装的 Python 包,您可以使用 yolk -l。不过,您需要先使用easy_install yolk

【讨论】:

【参考方案7】:

在尝试卸载随时间安装的许多随机 Python 包时遇到了这个问题。

使用来自该线程的信息,这是我想出的:

cat package_list | xargs -n1 sudo pip uninstall -y

package_list 已从 virtualenv 中的 pip freeze 中清除(awk)。

要删除几乎所有 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!【参考方案8】:

我在 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

希望这会有所帮助。

【讨论】:

但是,我已经完全从 MacPorts 切换到了 Brew,Mac 的原生 python 2.7。通过 setup_tools 安装的 MySQLdb【参考方案9】:

所有信息都在其他答案中,但没有一个能概括两个您的要求或似乎使事情变得不必要地复杂:

为了您的移除需求,请使用:

pip uninstall <package>

(使用easy_install pip安装)

对于您的“列出已安装包”的需要,请使用:

pip freeze

或者:

yolk -l

可以输出更多的包细节。

(通过easy_install yolkpip install yolk 安装)

【讨论】:

运行yolk -l后,我看到我有重复的包,例如“scipy -0.11.0 -non-active development”和“scipy -0.14.0... -active development”。如何卸载这些非活动开发包? 这很好,只是我想卸载由 easy_install 安装的 pip。这是因为它最终安装了错误的 Python 版本。【参考方案10】:

网上有several 来源建议通过使用 -m 选项重新安装软件包然后删除 lib/ 中的 .egg 文件和 bin/ 中的二进制文件来进行黑客攻击。此外,有关此 setuptools 问题的讨论可以在 python 错误跟踪器上找到 setuptools issue 21。

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

【讨论】:

感谢您提供此信息。供其他人参考,这是您提到的问题的链接:bugs.python.org/setuptools/issue21【参考方案11】:

试试

$ easy_install -m [PACKAGE]

然后

$ rm -rf .../python2.X/site-packages/[PACKAGE].egg

【讨论】:

删除一个包:$ easy_install -mxN PACKAGE 然后$ rm -rf .../lib/python2.X/site-packages/PACKAGE.egg(见peak.telecommunity.com/DevCenter/…)【参考方案12】:

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

【讨论】:

较新的pip 包管理器包含卸载功能。 我发现 pip 比卸载更好,因为 pip 从源安装。如果您像我一样拥有全新的 Win7 64 位,它将节省您的时间:) 有些人被旧版本的 pip 卡住了,没有卸载选项,所以这个答案还是值得的。 可能值得一提的是,这种方法可能会在系统上留下杂散的data_filesscripts(可能还有其他文件类别)。 egg 的EGG-INFO/SOURCES.txt 包含所有package 文件和sources 的列表,但不包含data_files,它们可以安装到系统上的任意目录中... pip 并不总是删除 easy_install 安装的所有内容。 Here's a little experience 刚刚发生在我身上,pip 无法卸载我的一个模块。我必须从 site-packages/easy-install.pth 中删除匹配的行才能完全卸载它。【参考方案13】:

如果问题对您来说已经够严重的烦恼,您可以考虑virtualenv。它允许您创建一个封装 python 库的环境。您在那里安装包,而不是在全局站点包目录中。您在该环境中运行的任何脚本都可以访问这些包(也可以选择访问您的全局包)。在评估我不确定我想要/需要全局安装的软件包时,我经常使用它。如果您决定不需要该软件包,只需将虚拟环境吹走就很容易了。它很容易使用。创建一个新环境:

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

virtual_envt 会在新环境中为你安装 setuptools,所以你可以这样做:

$>ENV/bin/easy_install

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

【讨论】:

什么是 $>?这是提示吗?也许更正为 $ 会更有帮助?谢谢

以上是关于如何删除使用 Python 的 easy_install 安装的软件包?的主要内容,如果未能解决你的问题,请参考以下文章

flask环境开发搭建

配置Python+selenium+firefox自动化测试

Python中如何删除一个文件

45如何使用python删除一个文件?

如何使用 python 删除字典对象? [复制]

如何使用 Python 删除我自己的 Instagram 关注者?