【Pip】ValueError: ("Missing 'Version:' header and/or METADATA file at path

0x00 前言

有时候,pip install 用的好好的,突然就一屏幕红字:

ERROR: Error checking for conflicts.
Traceback (most recent call last):
  File "c:\programdata\anaconda3\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 2672, in version
    return self._version
  File "c:\programdata\anaconda3\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 2806, in __getattr__
    raise AttributeError(attr)
AttributeError: _version

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\programdata\anaconda3\lib\site-packages\pip\_internal\commands\install.py", line 517, in _warn_about_conflicts
    package_set, _dep_info = check_install_conflicts(to_install)
  File "c:\programdata\anaconda3\lib\site-packages\pip\_internal\operations\check.py", line 110, in check_install_conflicts
    package_set, _ = create_package_set_from_installed()
  File "c:\programdata\anaconda3\lib\site-packages\pip\_internal\operations\check.py", line 49, in create_package_set_from_installed
    package_set[name] = PackageDetails(dist.version, dist.requires())
  File "c:\programdata\anaconda3\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 2680, in version
    raise ValueError(msg, self)
ValueError: ("Missing 'Version:' header and/or METADATA file at path: c:\\programdata\\anaconda3\\lib\\site-packages\\-ip-19.0.1.dist-info\\METADATA", Unknown [unknown version] (c:\programdata\anaconda3\lib\site-packages))

虽然不影响使用(啊大家可能没注意到,即便老报错但你 pip install 的东西是确实正常安装好了的),
但终归还是看着心烦,处理一下吧。

0x01 问题分析

这个问题在 pip 的Github项目里,作为 Issue #6194 被讨论过,
直接说结论的话就是:site-package 目录下存在开头为 -0%~ 的问题文件夹。

这些文件夹可以简单的理解为坏了的文件夹,
比起删除,更加优雅(显摆)的方法是直接更新他们:

sudo -H pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U

这里的 pip 要换成各位自己的路径,例如 /Users/your_name/anaconda3/bin/pip

0x02 解决方案

只需要看最后的ValueError中的path:

ValueError: ("Missing 'Version:' header and/or METADATA file at path: 
c:\\programdata\\anaconda3\\lib\\site-packages\\-ip-19.0.1.dist-info\\METADATA", Unknown [unknown version] 
(c:\programdata\anaconda3\lib\site-packages))

我们看到,路径是 site-packages 目录下的 -ip-19.0.1.dist-info
去括号里的你自己的路径那个文件夹下面,例如我这里的是 c:\programdata\anaconda3\lib\site-packages
找到这个 -ip-19.0.1.dist-info 文件夹,删掉就正常了。

你可能感兴趣的:(DIY)