pythonsetup.py卸载

我安装了一个带有python setup.py install的python包。

我如何卸载它?

516003 次浏览

注意:避免使用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_moduleTraceback (most recent call last):File "<stdin>", line 1, in <module>ModuleNotFoundError: No module named 'my_module'

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

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

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

例如,

python setup.py bdist_wininstdist/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安装的大多数软件包,但在某些罕见的情况下可能会失败。

这是我在MS Windows上使用名为ttr.rdstmc的包进行本地测试的真实示例。

$ pip freeze |grep ttrttr.aws.s3==0.1.1devttr.aws.utils.s3==0.3.0ttr.utcutils==0.1.1dev
$ python setup.py develop..........Finished processing dependencies for ttr.rdstmc==0.0.1dev
$ pip freeze |grep ttrttr.aws.s3==0.1.1devttr.aws.utils.s3==0.3.0-e hg+https://vlcinsky@bitbucket.org/vlcinsky/ttr.rdstmc@d61a9922920c508862602f7f39e496f7b99315f0#egg=ttr.rdstmc-devttr.utcutils==0.1.1dev
$ pip uninstall ttr.rdstmcUninstalling ttr.rdstmc:c:\python27\lib\site-packages\ttr.rdstmc.egg-linkProceed (y/n)? ySuccessfully uninstalled ttr.rdstmc
$ pip freeze |grep ttrttr.aws.s3==0.1.1devttr.aws.utils.s3==0.3.0ttr.utcutils==0.1.1dev

编辑2015-05-20

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

在python 2.7.9和python 3.4中安装pip

最近的python版本附带了一个包ensurepip,即使在离线时也允许安装pip:

$python-m ensurepip--升级

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

使用grepfind

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

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

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

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

1)获取python版本-

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

->上述命令为您提供当前python版本2.4.3

2)获取python的安装目录-

[linux machine]# whereis pythonpython: /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

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

#1的答案有问题:

  • 不会在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_wininstdist/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>

我在过去的某个时候意外地在我的全局环境中运行了“pythonsetup.pyinstall”,并且在卸载时遇到了很大的困难。这些解决方案没有帮助。“pip uninstall”不适用于“无法卸载'spunk-app视察'”。没有找到要卸载的文件。“sudo pip uninstall”不起作用“无法卸载需求spunk-app视察,未安装”。我尝试卸载pip,删除pip缓存,在我的硬盘上搜索软件包,等等……

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

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

所以我看不出他们为什么使用setup.py而不是写requirements.txt文件的原因。需求文件可以用来在虚拟环境中安装包,不会弄乱系统python包。

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

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

以上为python3工作并删除包及其*. ege-info文件

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

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

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

从本地安装python setup.py install

从本地卸载pip uninstall mypackage