Python setup.py 卸载
- 2025-02-18 09:23:00
- admin 原创
- 94
问题描述:
我已经安装了一个带有的 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.rdstmc
MS 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 安装)。
使用grep
或find
上述示例假设您已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
这是一种方法。
扫码咨询,免费领取项目管理大礼包!