首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python setup.py卸载

python setup.py卸载
EN

Stack Overflow用户
提问于 2009-10-11 09:06:56
回答 17查看 515.8K关注 0票数 910

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

我如何卸载它?

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2009-10-11 09:12:27

注意:避免使用python setup.py install使用pip install .

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

如果您不知道所有文件的列表,可以使用--record选项重新安装它,并查看它生成的列表。

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

代码语言:javascript
复制
python setup.py install --record files.txt

一旦您想卸载,就可以使用xargs进行删除:

代码语言:javascript
复制
xargs rm -rf < files.txt

或者,如果您正在运行Windows,请使用Powershell:

代码语言:javascript
复制
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/ on macOS。它没有文件,但是Python仍然会导入一个空模块:

代码语言:javascript
复制
>>> import my_module
>>> my_module.__file__
None

一旦删除,Python显示:

代码语言:javascript
复制
>>> import my_module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'my_module'
票数 1.1K
EN

Stack Overflow用户

发布于 2012-10-09 10:19:27

对我来说,主要有以下几点:

安装了pip,例如:

代码语言:javascript
复制
$ easy_install pip

请检查,从pip的角度来看,您安装的包是如何命名的:

代码语言:javascript
复制
$ pip freeze

这将列出您已安装的所有软件包的名称(由pip检测到)。名称可以是长的,然后只使用在#egg=和以后显示的包的名称。在大多数情况下,您也可以忽略版本部分(随==-而来)。

然后卸载软件包:

代码语言:javascript
复制
$ pip uninstall package.name.you.have.found

如果它要求确认删除包装,那么你是幸运的家伙,它将被删除。

pip应检测所有由pip安装的软件包。它还将检测通过easy_install或setup.py安装的大多数软件包,但在一些罕见的情况下,这可能会失败。

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

代码语言:javascript
复制
$ 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接踵而来-升级

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

使用grepfind

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

票数 218
EN

Stack Overflow用户

发布于 2014-08-08 17:34:59

第一个答案有问题:

  • 对mac不起作用。
  • 如果安装了包含空格或其他特殊字符的文件,则xargs命令将失败,并删除与单个单词匹配的任何文件/目录。
  • -r in rm -rf是不必要的,最坏的情况是可以删除您不想删除的内容。

相反,对于类似unix的:

代码语言:javascript
复制
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 --

至于窗户:

代码语言:javascript
复制
python setup.py bdist_wininst
dist/foo-1.0.win32.exe

卸载setup.py安装也存在无法解决的问题,在典型情况下不会困扰您。要获得更完整的答案,请参见下面的wiki页面:

安装

票数 90
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1550226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档