当前位置:  开发笔记 > 编程语言 > 正文

python setup.py卸载

如何解决《pythonsetup.py卸载》经验,为你挑选了7个好方法。

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

我该如何卸载它?



1> Martin v. Lö..:

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

如果您不知道所有文件的列表,可以使用该python setup.py install选项重新安装它,并查看它生成的列表.

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

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}

然后删除包含目录,例如pip install .on --record.它没有文件,但Python仍然会导入一个空模块:

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

删除后,Python会显示:

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


这会搞乱带空格的文件.请参阅下面的答案:http://stackoverflow.com/a/25209129/14456
如果这不起作用,请按如下方式添加sudo:``cat files.txt | xargs sudo rm -rf``
这也留下了空目录.
嗨,我尝试了你的建议,当我尝试cat files.txt |时的一些文件 xargs rm -rf它表示权限被拒绝,即使在sudo模式下,例如/ usr/local/bin/pydoc或/ usr/local/bin/idle任何想法为什么?

2> Jan Vlcinsky..:

对我来说,以下几乎是有效的:

已安装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 --upgrade

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

使用grepfind

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


这应该是接受的答案,因为更容易和**pip**通常随Python一起提供.在命令提示符/终端中使用很简单 - "pip uninstall module"或"python -m pip uninstall module"应该可以正常工作.也应该是跨平台的,因为它是Python的一部分.

3> Ian Kelling..:

#1答案有问题:

不适用于mac.

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

-rrm -rf是不必要的,在最坏的情况可能会删除你不想要的东西.

相反,对于unix-like:

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安装也存在无法解决的问题,在典型情况下不会打扰您.有关更完整的答案,请参阅此Wiki页面:

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


我在赞成的评论下留下了评论.我的评论被隐藏在"加载更多评论"链接下,很少有人点击.我也提出了自己的答案,因为我还有很多话要说,即.我的回答中的链接.另外,当文件中有空格时,角落情况不会是我想到的第一个术语.
你为什么不在赞成的建议下留下建议呢?请注意,这些"严重问题"与角落案件有关.
至少在OS X Mavericks上,xargs没有-d选项.为什么?因为Apple爱你.无论如何,这具有与上述相同的效果,并且对于空间等是安全的.不过,这是特定的Bash.用--record运行安装到files.txt后:`OIFS = $ IFS; IFS = $ '\n'; FILES =($(cat files.txt)); IFS = $的OIF; sudo rm -rf"$ {FILES [@]}"`
@IanKelling如果字符串碰巧包含例如`%`或``\``字符,则在`printf`的格式字符串中嵌入变量将失败.始终提供格式字符串:`printf'%s\0'"$ line"`(也避免回声).虽然你可以通过使用`tr'\n''\ 0'
4> 小智..:

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

python setup.py install --record files.txt

当您要卸载时,您可以:

sudo rm $(cat files.txt)

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



5> Sнаđошƒаӽ..:

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

pip uninstall package_name

卸载任何你不想要的包.在这里阅读更多(pip文档).



6> RedGlyph..:

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

例如,

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

("foo"当然是一个例子).


我不知道我是否喜欢它,但是你得到了正交思考的观点.:)
@PiotrOwsiak:是的,但那不是声明.在我看来,2.8当时仍有可能继续如此,直到PEP 404获得批准,去年年底.

7> user149513..:

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

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


通常,如果使用OP指定的python setup.py安装软件包,则不会有鸡蛋.OTOH,如果有一个因为使用了easy_install,那么卸载包的文档化方法是在删除egg文件之前使用easy_install -m; 否则,egg shell可能会留在easy-install.pth文件中.
推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有