问答中心分类: PYTHONpython设置。py卸载
0
seabass 提问 2分钟 前

我安装了一个带有python setup.py install.
如何卸载它?

17 Answers
0
Jan Vlcinsky 回答 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:\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安装)。
使用grepfind
上面的例子假设grep安装。我(当时我的机器上安装了微软Windows)安装了一套linux实用程序(包括grep)。或者,使用本机MS Windowsfind或者干脆忽略过滤,在更长的检测到的python包列表中查找名称。

您使用哪个打包工具/版本来实现此功能?(distutils,distribute等)

Jan Vlcinsky 回复 2分钟 前

我使用setuptools. 你可以查一下比特桶。org/vlcinsky/ttr。aws。utils。s3(这并不完美)。无论如何,我对使用名称空间包很不满意,有时导入会在没有明显原因的情况下被破坏。但这是另一个故事。

Jan Vlcinsky 回复 2分钟 前

纠正自己。即使我导入setuptools,事实上我使用distribute. 另一个教训:当从pypi安装我自己的包并计划在本地开发另一个共享相同命名空间的包时,不要使用 $ pip install <the package>使用$ easy_install <the package>,否则在导入开发包时会遇到冲突。

tflutre 回复 2分钟 前

帮助他人:因为我不是root,所以我把所有东西都安装在家里。这就是我所做的easy_install --user --prefix=$HOME pip. 然后,我在路径中添加了以下内容:ln -s /home/tflutre/.local/bin/pip ~/bin,ln -s /home/tflutre/.local/bin/pip2.7 ~/binln -s /home/tflutre/.local/bin/pip2 ~/bin.

MikeiLL 回复 2分钟 前

谢谢你提及freeze. 现在我需要了解一下develop命令

Edward 回复 2分钟 前

这应该是可以接受的答案,因为这更容易和pip无论如何,Python通常都会附带。它易于在命令提示符/终端中使用-pip uninstall modulepython -m pip uninstall module应该有效。也应该是跨平台的,这是Python的一部分。

gaborous 回复 2分钟 前

同意@Edward的观点,从Python v2.7.10开始,它甚至可以在Windows上运行。

嗯,这失败了,“这是一个安装了distutils的项目,因此我们无法准确地确定哪些文件属于它,这只会导致部分卸载。”对于Python 2.7.15+、pip 18.1、Ubuntu 18.10,本回购协议.

0
Ian Kelling 回答 2分钟 前

#1答案有问题:

  • 在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 '\n' '
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 --
' < 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

lpapp 回复 2分钟 前

为什么你不把一个建议放在投赞成票的建议下面?请注意,这些“严重问题”与转角情况有关。

Ian Kelling 回复 2分钟 前

我在投赞成票的下面留下了一条评论。我的评论隐藏在“加载更多评论”链接下,很少有人点击。我也做了我自己的答案,因为我有很多要说的,即我的答案中的链接。此外,当一个文件中有一个空格时,我脑海中不会出现第一个术语“角落案例”。

Jack O'Connor 回复 2分钟 前

值得一提的是,我认为这将在包含换行符的文件名上失败:)无论有没有包维护器那么邪恶,我希望我永远不会发现。

Ian Kelling 回复 2分钟 前

@JackO’Connor,这是真的,与更多信息的链接也指出了这一点。

Joseph Sikorski 回复 2分钟 前

至少在OS X Mavericks上,xargs没有-d选项。为什么?因为苹果爱你。无论如何,这具有与上述相同的效果,并且对于空间等是安全的。不过,这是Bash特有的。在运行安装后,使用–录制到文件。txt:OIFS=$IFS; IFS=$'\n'; FILES=( $( cat files.txt ) ); IFS=$OIFS; sudo rm -rf "${FILES[@]}"

Ian Kelling 回复 2分钟 前

@约瑟夫西科尔斯基。谢谢你的洞察力。我已经更新了mac版本的答案。由于参数长度限制,您建议的命令将在典型程序上失败。

geirha 回复 2分钟 前

@IanKelling在内部嵌入变量printf的格式字符串将失败,如果该字符串恰好包含例如。%\字符。始终提供格式字符串:printf '%s\0' "$line"(也可避免回声)。尽管您可以通过使用tr '\n' '\0' < files.txt | xargs -0 rm -f

Cwissy 回复 2分钟 前

小的改进(当您使用sudo安装文件时)卸载命令应该是tr '\n' '\0' < files.txt | xargs -0 sudo rm -f --

Salami 回复 2分钟 前

这不会处理安装时创建的新文件夹。

Ian Kelling 回复 2分钟 前

@萨拉米香肠,这已经包含在“完整答案”的链接中(现在已经涵盖了多年)

hakre 回复 2分钟 前

这不适用于名称中包含换行符的文件。

0
nathan 回答 2分钟 前

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

python setup.py install --record files.txt

当您想要卸载时,您可以:

sudo rm $(cat files.txt)

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

Gabrielle 回复 2分钟 前

有没有办法不仅检查是不是我的程序安装了它,而且检查从那时起,是否没有其他应用程序使用了此资源?例如,我安装了一个工具,为此,我必须安装几个库,可能其中一些已经安装(这意味着我不能在卸载过程中删除),但我也不能删除其他应用程序没有安装的任何东西,因为我的库是先安装的。。

0
Sнаđошƒаӽ 回答 2分钟 前

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

pip uninstall package_name

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

0
Nico Schlömer 回答 2分钟 前

不是完全回答这个问题,而是每天都能帮助我的东西:
使用安装软件包

pip install .

这会把包裹放进去$HOME/.local. 使用卸载

pip uninstall
Danijel 回复 2分钟 前

pip unistall .不适合我,但是pip uninstall是的,谢谢!