pip uninstall: "没有找到要卸载的文件。"

Posted

技术标签:

【中文标题】pip uninstall: "没有找到要卸载的文件。"【英文标题】:pip uninstall: "No files were found to uninstall." 【发布时间】:2016-10-22 19:56:15 【问题描述】:

我创建了一个 python 模块,称之为 'foo_bar'。

我可以安装它,我可以升级它,但我无法卸载它。

我使用 bdist_wheel 构建我的模块:

$ python3 setup.py bdist_wheel

我按如下方式安装和升级它:

$ python3 -m pip --timeout 60 install --upgrade dist/foo_bar-1.4.3-py3-none-any.whl

它在 Python 3.4 框架目录中列出:

ls -al /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/
drwxr-xr-x   12 samwise  admin     408 Jun 21 02:50 foo_bar
drwxr-xr-x    9 samwise  admin     306 Jun 21 02:50 foo_bar-1.4.3.dist-info

它在 pip freeze 中列出:

$ python3 -m pip freeze
foo-bar==1.4.3

但是,如果我尝试执行 pip 卸载,它找不到它的文件

$ python3 -m pip uninstall foo-bar
Can't uninstall 'foo-bar'. No files were found to uninstall.

我在 setup.py 中做错了什么,导致在卸载期间无法找到我的模块文件吗?

版本信息如下:

$ python3 --version
Python 3.4.4
$ python3 -m pip --version
pip 8.1.2 from /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages (python 3.4)

【问题讨论】:

您是否尝试在您的库文件中删除它?也许它有效 是的,我可以使用rm -fR 执行硬删除,但这似乎不是执行uninstall 的正确方法。我打算在pypi上公开这个模块,如果不能正确卸载,那么这对python社区不利。 @jeff00seattle 你有没有找到解决办法? 对我来说,使用sudo 解决了问题 我想知道使用纯字母名称时是否会出现同样的问题。我总是被告知,非常不鼓励使用连字符的包名称,尤其是为了避免混淆或使用问题。 【参考方案1】:

我遇到了同样的问题。使用verbose 帮助我找到了更多原因:

$ pip3 uninstall --verbose my-homemade-package
Not sure how to uninstall: my-homemade-package e48e635 - Check: /home/olivier/my-homemade-package
Can't uninstall 'my-homemade-package'. No files were found to uninstall.

删除 /usr/local/python2.x/usr/local/python3.x 中与“my-homemade-package”相关的所有内容没有帮助。

我做了一个pip3 show my-homemade-package 并在我的计算机上获得了安装包的位置:

$ pip3 show my-homemade-package
Name: my-homemade-package
Version: e48e635
Summary: My Home Made package
Home-page: UNKNOWN
Author: UNKNOWN
Author-email: UNKNOWN
License: Proprietary
Location: /home/olivier/my-homemade-package
Requires: pyOpenSSL, pyasn1, protobuf

删除/home/olivier/my-homemade-package 解决了问题(即:未列出该包)。

【讨论】:

我设法通过安装而不卸载来覆盖已安装的包:$ pip3 install my-homemade-package --force【参考方案2】:

这是一篇旧帖子,但它在 Google 中排名第一。上面的答案是正确的,但是,在我的情况下,仍然有行 /usr/local/lib/python3.6/site-packages/easy-install.pth 在删除鸡蛋文件后我必须删除。

【讨论】:

谢谢!尽管手动删除了站点包文件夹中包的鸡蛋链接,但我很困惑 pip 是如何知道我的包存在的。删除 pth 文件中的条目完全解决了我的问题。【参考方案3】:

当我在 setup.py 中重命名我的模块时遇到了这样的问题。

旧的old_name.egg-info 目录仍然存在于my_module 目录中。因此,当我使用pip install -e . 安装模块时,pip 在python3.8/site-packages/easy-install.pth 中创建了一条指向模块目录的行。在该模块被pip list 列出之后,两个名称:new-nameold-name。当我尝试使用pip remove old-name 删除旧模块时,pip 显示错误:

Found existing installation: old-name 0.3.0
Can't uninstall 'old-name'. No files were found to uninstall.

解决方案是从模块目录中删除目录old_name.egg-info。之后pip list 只显示new-name

可能不是对原始帖子的直接回答,而是主题名称问题的解决方案之一。

【讨论】:

【参考方案4】:

所以我遇到了与 OP 类似的问题。我可以用pip install dist/mypackage.tar.gz 安装我的包。安装可以正常工作,但最后会显示Can't uninstall 'mypackage'. No files were found to uninstall.,而且实际上pip uninstall mypackage 稍后将无法正常工作。

这听起来很傻,但对我有用的是更改工作目录:一旦我离开 mypackage/ 目录,pip uninstall mypackage 就工作了。

【讨论】:

以上是关于pip uninstall: "没有找到要卸载的文件。"的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow:为啥'pip uninstall tensorflow'找不到tensorflow

docker中pip install/uninstall报错

pip install报错Can't roll back cryptography; was not uninstalled

安装pip3 install sanic?

pip安装:Cannot uninstall ''. It is a distutils installed project and thus we cannot accurately

已解决!pip安装daal库时报错:ERROR: Cannot uninstall ‘TBB‘. It is a distutils installed project and......其它库类推