【问题标题】:pip how to remove incorrectly installed package with a leading dash: "-pkgname"pip 如何删除带有前导破折号的错误安装的软件包:“-pkgname”
【发布时间】:2026-02-10 18:35:01
【问题描述】:

运行pip freeze 后,我注意到列表顶部出现以下警告:

WARNING: Could not parse requirement: -atplotlib

所以我使用pip list检查了安装的包,确实以下被认为是一个包:

Package         Version
--------------- -------
-atplotlib      3.0.3

我想我在安装/升级 matplotlib 时可能有错字,导致安装了上述“包”。

但我无法删除它,因为pip uninstall -atplotlib 被读取为命令并返回以下错误:

No such option: -a

我找到了以下文件夹:

C:\Users\name\Anaconda3\Lib\site-packages\~atplotlib

C:\Users\name\Anaconda3\Lib\site-packages\~atplotlib-3.0.3-py3.7.egg-info

删除它们是否安全且足够?

【问题讨论】:

    标签: python windows pip


    【解决方案1】:

    site-packages 目录中删除有问题的文件夹是安全的。

    更多信息如下(source):

    当卸载一个包时,pip 现在会将它重命名为一个名字 无法导入,一旦确认一切 将成功(包括安装新版本,如果它正在执行 升级),然后它才会删除这些文件夹。如果某事失败了, 它会将它们重命名。

    以前,它会将整个内容复制到另一个目录, 并且可能是另一个驱动器,然后在需要时将它们复制回来。 所以这个改变是一个显着的性能提升,尤其是 对于包含大量文件的包。

    您在这里看到的是由于某种原因删除失败 - 也许 pip 崩溃了? - 所以目录没有被删除。一世 以为 pip 完全忽略了它们,但也许还有别的 自从我测试之后发生了变化?

    目录可以安全删除。

    【讨论】:

    • 链接是金色的。
    • 如何删除所有有问题的文件夹,它们在哪里?
    • 在 windows 上,检查 C:\Anaconda3\Lib\site-packages
    • "也许 pip 崩溃了?" -- 就我而言,我在 WSL 中运行 virtualenv,当我尝试更新时,远程模式下的 VSCode 锁定了我的几个包。这导致工件保留在我的site-packages 文件夹中。删除有问题的文件夹效果很好。
    【解决方案2】:

    编辑:根据this link,由劳伦斯在his answer提供

    site-package 目录中查找并删除名称不正确的文件夹应该可以解决问题。

    如果这还不够,请按照以下说明继续清洁。

    搜索损坏包的名称(没有前导破折号)让我找到以下两个文件夹:

    C:\Users\name\Anaconda3\Lib\site-packages~atplotlib

    C:\Users\name\Anaconda3\Lib\site-packages~atplotlib-3.0.3-py3.7.egg-info

    按照 Hoefling 的评论(下)

    我检查了 egg-info 目录 %dir%/~atplotlib-3.0.3-py3.7.egg-info/SOURCES.txt 中的 SOURCES.txt 文件。浏览此文件中的路径列表并确保列出的所有路径都不包含~。然后我将目录~atplotlib-3.0.3-py3.7.egg-info 重命名为atplotlib-3.0.3-py3.7.egg-info(删除了波浪号~)。
    最后我跑了pip uninstall atplotlib,提示如下:

    卸载 atplotlib-3.0.3:
    将删除:
    C:\Users\name\Anaconda3\Lib\site-packages\atplotlib-3.0.3-py3.7.egg-info C:\Users\name\Anaconda3\Lib\site-packages\matplotlib
    C:\Users\name\Anaconda3\Lib\site-packages\pylab.py

    继续删除解决了问题(警告消失了,包不再在包列表中。

    【讨论】:

    • 问题是你没有删除所有已安装的文件,因为你已经删除了egg-info 目录,你没有关于已安装文件的信息(文件~atplotlib-3.0.3-py3.7.egg-info/SOURCES.txt )。您应该浏览此文件中的路径列表,并确保其中列出的所有路径不包含 ~ 并与磁盘上的路径匹配(必要时重命名)。然后重命名唯一目录~atplotlib-3.0.3-py3.7.egg-info 以删除波浪号(例如atplotlib-3.0.3-py3.7.egg-info),然后重命名pip uninstall atplotlib
    • 查看matplotlib 安装,您应该在C:\Users\name\Anaconda3\Lib\site-packages 目录中保留mpl_toolkits 目录和pylab.py 模块(可能还带有波浪号前缀)。删除那些应该完成清理。
    • @hoefling 您好,感谢您的指示。如果这有助于清理过程,我可以轻松恢复这两个文件夹(我备份了它们)
    • @removing the ~ from the folder and running pip uninstall atplotlib 我得到以下信息:Uninstalling atplotlib-3.0.3: Would remove: C:\Users\name\Anaconda3\Lib\site-packages\atplotlib-3.0.3-py3.7.egg-info, C:\Users\name\Anaconda3\Lib\site-packages\matplotlib, C:\Users\name\Anaconda3\Lib\site-packages\pylab.py 我应该继续吗?
    • 最后我不得不删除文件夹而不是 pip uninstall <pkg>
    【解决方案3】:

    在删除 ~ 字符作为文件名的开头之后,我必须执行 rm -rf atplotlib

    $ pip freeze | grep atplotlib
    $ cd /home/user/.local/lib/python3.8/site-packages
    $ mv \~ atplotlib atplotlib
    $ pip freeze | grep atplotlib
    atplotlib ==3.0.3
    $  pip uninstall atplotlib
    WARNING: Skipping atplotlib as it is not installed.
    $ rm -rf atplotlib
    

    【讨论】:

      【解决方案4】:

      执行后我自己收到以下错误: python -m pip install --upgrade pip --user

      警告:忽略无效分发 -ip (c:\python310\lib\site-packages)

      1. 我转到 C:\
      2. 中的文件规范
      3. 找到了 -ip(它位于顶部),然后我将其删除。
      4. 再次执行代码

      结果:

      已满足要求:c:\users\GhostFace\appdata\roaming\python\python310\site-packages (21.3.1) 中的 pip

      【讨论】: