python setup.py 卸载

新手上路,请多包涵

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

我该如何卸载它?

原文由 flybywire 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 534
2 个回答

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

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

原文由 Martin v. Löwis 发布,翻译遵循 CC BY-SA 4.0 许可协议

对我来说,以下主要有效:

安装了 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 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 包列表中找到名称。

原文由 Jan Vlcinsky 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题