协慌网

登录 贡献 社区

python setup.py 卸载

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

如何卸载?

答案

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

对我来说,以下主要工作方式:

已安装点子,例如:

$ 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://[email protected]/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 surepip - 升级

在某些系统(例如 Debian Jessie)上,此功能不可用(以防止破坏系统 python 安装)。

使用grepfind

上面的示例假定您已经安装了grep 。我(当时在我的计算机上安装了 MS Windows)安装了一套 Linux 实用程序(包括 grep)。或者,使用本机 MS Windows find或简单地忽略该过滤,并在更长的检测到的 python 软件包列表中找到该名称。

第一个答案有问题:

  • 在 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_wininst
dist/foo-1.0.win32.exe

卸载setup.py install 也有无法解决的问题,在典型情况下不会困扰您。有关更完整的答案,请参见以下 Wiki 页面:

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