通过pip卸载的setup.py

3 投票
1 回答
1135 浏览
提问于 2025-04-17 03:52

根据另一个问题,pip提供了一个卸载包的功能,它的帮助文档也提到了这一点。

我有一个项目,安装后在我的本地site-packages文件夹里的结构是这样的:

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

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

  /path/to/python2.6/site-packages/projecta-1.0-py2.6.egg-info
Proceed (y/n)?

如果我回答y,它会删除.egg-info目录,但不会删除主projecta目录,而且也没有提示有什么错误。为什么pip不处理或不知道要删除这个目录呢?

这个项目是通过一个setup.py文件使用distutils安装的。我可以在这个文件中使用什么特别的设置来帮助pip进行卸载吗?

1 个回答

3

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

其实,pip 是基于一些 setuptools 的功能,比如 --record 这个选项,它可以存储包的元数据(这就是 pip 能够卸载与包相关的文件的原因)。

你可以试试这样做:

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

撰写回答