我已经用python setup.py install安装了一个python包。

如何卸载?


注意:避免使用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}

然后在macOS上删除包含的目录,例如/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/。它没有文件,但是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'

转到你的python包目录,删除你的。egg文件, 例如: python2.5 (ubuntu): /usr/lib/python2.5/site-packages/

python2.6 (ubuntu): /usr/local/lib/python2.6/dist-packages/


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

例如,

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

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


扩展Martin所说的内容,记录安装输出和一点bash脚本就可以很好地完成这个任务。我是这么做的…

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

和很快。卸载。


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

python setup.py install --record files.txt

当你想卸载时,你可以:

sudo rm $(cat files.txt)

这是可行的,因为rm命令接受一个以空格分隔的文件列表来删除,而您的安装记录就是这样一个列表。


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

安装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:\python27\lib\site-packages\ttr.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——升级

在某些系统上(如Debian Jessie)这是不可用的(以防止破坏系统python安装)。

使用grep或find

上面的例子假设您已经安装了grep。我已经(在我的机器上安装了MS Windows)安装了一套linux实用程序(包括grep)。或者,使用本机MS Windows find,或者直接忽略该过滤,并在检测到的python包的较长列表中查找名称。


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

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

也许你可以这样做作为一种替代:-

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蛋文件

[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

这对我很有效。我能够卸载包,这是困扰我:)


第一条答案有问题:

不会在mac上工作。 如果安装的文件包含空格或其他特殊 字符,xargs命令将失败,并删除任何 匹配单个单词的文件/目录。 rm -rf中的-r是不必要的,在最坏的情况下可能会删除你的东西 我不想。

相反,对于类unix:

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

对于windows:

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

卸载setup.py install还存在一些无法解决的问题,在典型情况下,这些问题不会困扰您。要获得更完整的答案,请参阅这个wiki页面:

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


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

pip uninstall package_name

卸载你不再需要的软件包。在这里阅读更多(pip文档)。


我想你可以打开setup.py,找到包名,然后让pip卸载它。

假设名称在'METADATA'变量中可用:

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

我并没有完全回答这个问题,但我每天都在帮助我:

使用

pip install .

这将把包放在$HOME/.local中。卸载与

pip uninstall <package_name>

我曾经在过去的某个时候不小心在我的全局环境中运行了“python setup.py install”,卸载时遇到了很大的困难。这些解决方案并没有帮助。“pip uninstall”和“不能卸载'splunk-appinspect'”不搭。没有找到要卸载的文件。”“sudo pip uninstall”失败“无法卸载要求splunk-appinspect,未安装”。我尝试卸载pip,删除pip缓存,搜索我的硬盘驱动器的包,等等…

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


我在我的PyCharm中运行了一次python setup.py install,它将所有的包安装到我的conda基础环境中。稍后当我想删除所有这些包时,pip卸载不起作用。我必须手动从/anaconda3/lib/python3.7/site-packages中删除它们:(

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


如果在重新安装包后仍然有应该删除的文件,请确保文件夹构建也被删除。因此,假设pkg是要删除的包:

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

为python3计算并删除包及其*。egg-info文件


{virtualenv}/lib/python2.7/site-packages/(如果不使用virtualenv,则使用{system_dir}/lib/python2.7/dist-packages/)

删除egg文件(例如distribute-0.6.34-py2.7.egg) 如果easy-install.pth文件中有任何文件,删除相应的行(它应该是源目录或egg文件的路径)。


我用python setup.py在conda环境下开发了一个开发鸡蛋链接,用pip uninstall <packagename>删除了鸡蛋链接。至少在这种情况下,卸载pip是一种方法。


从本地安装 Python setup.py安装

从本地卸载 PIP卸载mypackage