用于通过 pip 卸载的 Setup.py

Posted

技术标签:

【中文标题】用于通过 pip 卸载的 Setup.py【英文标题】:Setup.py for uninstalling via pip 【发布时间】:2011-12-03 03:04:20 【问题描述】:

根据another question,pip 提供了一个卸载鸡蛋的工具,它的帮助也表明了这一点。

我有一个项目,一旦安装,我的本地站点包文件夹中的结构如下所示:

项目/
projecta-1.0-py2.6.egg-info/

使用最新版本,pip uninstall projecta 会问我以下问题:

 /path/to/python2.6/site-packages/projecta-1.0-py2.6.egg-info
继续(是/否)?

回答y 将删除.egg-info 目录,但不会删除主要的projecta 目录,不用说有任何错误。为什么 pip 不管理也不知道删除这个目录?

项目本身是通过使用 distutils 的 setup.py 文件安装的。我可以/应该在该文件中使用任何特殊设置来帮助 pip 完成删除过程吗?

【问题讨论】:

【参考方案1】:

如果我没记错的话,pip 知道如何卸载通过setuptools/distribute 安装的软件包,而不是原始的distutils

setuptools 的一些特性 pip 是基于的 - 比如 --record 选项,它存储包元数据(它允许 pip 卸载包相关文件)。

尝试做:

$ pip install /path/to/projecta
$ pip uninstall projecta

【讨论】:

以上是关于用于通过 pip 卸载的 Setup.py的主要内容,如果未能解决你的问题,请参考以下文章

为啥我使用 setup.py 安装时找不到 ansible?

setup.py 中的 Python 包名称与 pip 名称

setup.py 不尊重 PIP_INDEX_URL

在 setup.py 或 pip 需求文件中,如何控制安装包依赖项的顺序?

怎么卸载已经安装的python

从 setup.py 运行所需的 .msi 安装程序,以便使用 pip install 运行