如何删除使用 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 -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 yolk
或pip 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_files
和scripts
(可能还有其他文件类别)。 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 安装的软件包?的主要内容,如果未能解决你的问题,请参考以下文章