Python setup.py 卸载

2025-02-18 09:23:00
admin
原创
94
摘要:问题描述:我已经安装了一个带有的 Python 包python setup.py install。我该如何卸载它?解决方案 1:注意:避免使用python setup.py install。相反,使用pip install .您需要手动删除所有文件,并撤消安装时手动执行的任何其他操作。如果您不知道所有文件的列...

问题描述:

我已经安装了一个带有的 Python 包python setup.py install

我该如何卸载它?


解决方案 1:

注意:避免使用python setup.py install。相反,使用pip install .

您需要手动删除所有文件,并撤消安装时手动执行的任何其他操作。

如果您不知道所有文件的列表,您可以使用该--record选项重新安装它,并查看生成的列表。

要记录已安装文件的列表,您可以使用:

python setup.py install --record files.txt

一旦想要卸载,您可以使用xargs进行删除:

xargs rm -rf < files.txt

或者,如果您运行的是 Windows,请使用 PowerShell:

Get-Content files.txt | ForEach-Object {Remove-Item $_ -Recurse -Force}

然后删除包含目录,例如/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/在 macOS 上。它没有任何文件,但 Python 仍会导入一个空模块:

>>> import my_module
>>> my_module.__file__
None

删除后,Python 显示:

>>> import my_module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'my_module'

解决方案 2:

对我来说,以下方法最有效:

安装 pip,例如:

$ easy_install pip

检查一下,从 pip 的角度来看,你安装的包是如何命名的:

$ pip freeze

这将列出您已安装的所有软件包的名称(以及 pip 检测到的软件包)。名称有时可能很长,则仅使用 和 之后显示的软件包的名称#egg=。在大多数情况下,您还可以忽略版本部分( 或 之后的任何内容==-

然后卸载该包:

$ pip uninstall package.name.you.have.found

如果它要求确认是否删除该包裹,那么你很幸运,它将被删除。

pip 应检测所有由 pip 安装的软件包。它还应检测通过 easy_install 或 setup.py 安装的大多数软件包,但在某些罕见情况下可能会失败。

这是我在本地测试中使用ttr.rdstmcMS Windows 上命名的包的真实样本。

$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev

$ python setup.py develop
.....
.....
Finished processing dependencies for ttr.rdstmc==0.0.1dev

$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
-e hg+https://vlcinsky@bitbucket.org/vlcinsky/ttr.rdstmc@d61a9922920c508862602f7f39e496f7b99315f0#egg=ttr.rdstmc-dev
ttr.utcutils==0.1.1dev

$ pip uninstall ttr.rdstmc
Uninstalling ttr.rdstmc:
  c:python27libsite-packages    tr.rdstmc.egg-link
Proceed (y/n)? y
  Successfully uninstalled ttr.rdstmc

$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev

编辑 2015-05-20

上面所写的所有内容仍然适用,无论如何,现在可以进行一些小的修改。

在python 2.7.9和python 3.4中安装pip

最近的 Python 版本附带一个包,ensurepip允许在离线状态下安装 pip:

$ python -m Ensurepip --upgrade

在某些系统(例如 Debian Jessie)上,此功能不可用(以防止破坏系统 python 安装)。

使用grepfind

上述示例假设您已grep安装。我(当时我的机器上有 MS Windows)安装了一组 Linux 实用程序(包括 grep)。或者,使用本机 MS Windowsfind或简单地忽略该过滤并在检测到的 python 包的更长列表中查找名称。

解决方案 3:

第一个答案有问题:

  • 无法在 Mac 上运行。

  • 如果安装的文件包含空格或其他特殊字符,则xargs命令将失败,并删除与单个单词匹配的任何文件/目录。

  • 没有-r必要rm -rf,最糟糕的情况是可能会删除你不想要的东西。

相反,对于类 UNIX:

sudo python setup.py install --record files.txt
# inspect files.txt to make sure it looks ok. Then:
tr '
' '' < files.txt | xargs -0 sudo rm -f --

对于 Windows:

python setup.py bdist_wininst
dist/foo-1.0.win32.exe

卸载安装时还存在无法解决的问题setup.py,通常情况下不会困扰您。有关更完整的答案,请参阅此 wiki 页面:

https://ofswiki.org/wiki/Uninstalling_setup.py_install

解决方案 4:

首先记录您已安装的文件。您可以重复此命令,即使您之前已经运行过setup.py install

python setup.py install --record files.txt

当您想要卸载时,您只需:

sudo rm $(cat files.txt)

这是有效的,因为 rm 命令采用空格分隔的要删除的文件列表,而您的安装记录就是这样的列表。

解决方案 5:

现在,python 让你在安装过程中选择安装pip(我在 Windows 上,至少 python 在 Windows 上是这样的!)。考虑到你pip在安装 python 时选择了安装(你实际上不必选择,因为它是默认的),pip它已经为你安装了。然后,在命令提示符中输入pip,你应该会看到帮助。你可以在那里找到必要的使用说明。例如pip list显示已安装软件包的列表。你可以使用

pip uninstall package_name

卸载您不再需要的任何软件包。在此处阅读更多信息(pip 文档)。

解决方案 6:

虽然没有准确回答问题,但却能帮助我度过每一天:

使用以下方式安装软件包

pip install .

这会将软件包放入$HOME/.local。使用以下方法卸载

pip uninstall <package_name>

解决方案 7:

偷懒的方法:只需从 Windows 安装菜单(如果您使用的是 Windows)或 rpm 命令中卸载,前提是您在创建分发包后先重新安装它。

例如,

python setup.py bdist_wininst
dist/foo-1.0.win32.exe

(当然“foo”是一个例子)。

解决方案 8:

转到你的 Python 包目录并删除你的.egg文件,例如:

  • 在 Python 2.5 (Ubuntu) 中:/usr/lib/python2.5/site-packages/

  • 在Python 2.6(ubuntu)中:/usr/local/lib/python2.6/dist-packages/

解决方案 9:

也许你可以这样做:-

1)获取python版本-

[linux machine]# python
Python 2.4.3 (#1, Jun 18 2012, 14:38:55) 

-> 上述命令返回当前的 Python 版本,即2.4.3

2)获取python的安装目录-

[linux machine]# whereis python
python: /usr/bin/python /usr/bin/python2.4 /usr/lib/python2.4 /usr/local/bin/python2.5 /usr/include/python2.4 /usr/share/man/man1/python.1.gz

-> 从上面的命令中你可以得到安装目录 - /usr/lib/python2.4/site-packages

3)从这里你可以删除软件包和python egg文件

[linux machine]# cd /usr/lib/python2.4/site-packages
[linux machine]# rm -rf paramiko-1.12.0-py2.4.egg paramiko-1.7.7.1-py2.4.egg paramiko-1.9.0-py2.4.egg

这对我有用..而且我能够卸载困扰我的软件包:)

解决方案 10:

从本地安装
python setup.py install

从本地卸载
pip uninstall mypackage

解决方案 11:

我认为您可以打开 setup.py,找到包名称,然后让 pip 将其卸载。

假设该名称在“METADATA”变量中可用:

pip uninstall $(python -c "from setup import METADATA; print METADATA['name']")

解决方案 12:

At {virtualenv}/lib/python2.7/site-packages/(如果不使用虚拟环境则{system_dir}/lib/python2.7/dist-packages/

  • 删除 egg 文件(例如distribute-0.6.34-py2.7.egg

  • 如果有任何来自文件easy-install.pth,请删除相应的行(它应该是源目录或 egg 文件的路径)。

解决方案 13:

延续 Martin 的说法,记录安装输出和一些 bash 脚本可以很好地完成任务。以下是我所做的...

for i in $(less install.record);
sudo rm $i;
done;

然后瞧,卸载了。

解决方案 14:

如果在重新安装软件包后仍有需要删除的文件,请确保该文件夹build也已被删除。因此,假设这pkg是您要删除的软件包:

rm -r $(python3 -c "import pkg; print(pkg.__path__[0] + '*' )") 
rm -rf build

以上适用于 python3 并删除包及其 *.egg-info 文件

解决方案 15:

最好使用 bash 读取命令来删除相关文件,如下所示:

sudo python setup.py install --record files.txt
sudo bash -c "cat files.txt | xargs rm -rf"

解决方案 16:

我曾经在全局环境中意外运行过“python setup.py install”,卸载时遇到了很多困难。这些解决方案都没有帮助。“pip uninstall”无法正常工作,提示“无法卸载‘splunk-appinspect’。未找到要卸载的文件。”“sudo pip uninstall”无法正常工作,提示“无法卸载要求 splunk-appinspect,未安装”。我尝试卸载 pip、删除 pip 缓存、在硬盘上搜索软件包等...

“pip show” 最终让我找到了解决方案,“Location:” 指向一个目录,重命名该目录会导致软件包从 pip 列表中删除。我重新命名了该目录,它没有重新出现在 pip 的列表中,现在我可以在虚拟环境中重新安装我的软件包。

解决方案 17:

我曾python setup.py install在 PyCharm 中运行过一次,它会将所有软件包安装到我的 conda 基础环境中。后来当我想删除所有这些软件包时,pip uninstall却无法删除。我不得不手动从 /anaconda3/lib/python3.7/site-packages 中删除它们 :(

所以我不明白他们为什么使用setup.py而不是编写requirements.txt文件。requirement文件可用于在虚拟环境中安装包,并且不会干扰系统python包。

解决方案 18:

python setup.py develop我在 conda 环境下设置了一个开发 egg 链接,但pip uninstall <packagename>该 egg 链接已被删除。至少在这种情况下,pip uninstall这是一种方法。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3983  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2747  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   82  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   90  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   79  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用