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-name
和old-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
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......其它库类推