pip list 出现error(mac环境)

#------------问题描述--------------

 

更新到pip 19.0.1

原来pip list可以正常使用并且返回各个package安装版本

强制安装了一个package的版本

然后pip list 报了一大堆错

 

问题总结为:

就是因为强制安装了两个版本生成了一个 ‘-’开头的文件夹 这个文件夹里面没有METADATA这个文件

解决方法:

大概就是修改

(别怕修改源码 只要你确定没问题并且改的回来就改,实在不放心先把原来的复制出来,改一个新的放进文件夹,玩儿坏了再把之前备份的拖进来就完事儿了)

/usr/local/var/pyenv/versions/3.7.0/lib/python3.7/site-packages/pip/_vendor/pkg_resources/

(这里更换成你自己对应版本的文件夹,win版本的话 去你的报错里面找 红色那一大段最后一个报错点)

里面的init.py 那个文件的最后一个报错行我这里是2589。

在报错点前面加上一行 让他打印出来哪个文件夹出了故障:

if version is None:

print(self._provider.__dict__)

然后删除那个文件夹就完事儿了。

这个就是在源码里面加上这一段 下次再pip list 报错的时候 就会在一大段红的上面有白色的字,打印出了出问题的文件地址

去你的Finder里面用command+shift+G 到那个文件夹里看看发生了啥,如果是-开头的那个文件夹 删掉就好

 

#---------------------问题解决的原来帖子--------------------

https://github.com/pypa/pip/issues/6194

Environment

  • pip version:19.0.1
  • Python version:3.7
  • OS:MacOS

I update pip from 10.1 to 19.0.1, and I wanna check my python packages, I input "pip list" then two errors occurred.
Description

Expected behavior

Exception:
Traceback (most recent call last):
File "/usr/local/var/pyenv/versions/3.7.0/lib/python3.7/site-packages/pip/_vendor/pkg_resources/init.py", line 2584, in version
return self._version
File "/usr/local/var/pyenv/versions/3.7.0/lib/python3.7/site-packages/pip/_vendor/pkg_resources/init.py", line 2691, in getattr
raise AttributeError(attr)
AttributeError: _version

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/var/pyenv/versions/3.7.0/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 176, in main
status = self.run(options, args)
File "/usr/local/var/pyenv/versions/3.7.0/lib/python3.7/site-packages/pip/_internal/commands/list.py", line 148, in run
self.output_package_listing(packages, options)
File "/usr/local/var/pyenv/versions/3.7.0/lib/python3.7/site-packages/pip/_internal/commands/list.py", line 205, in output_package_listing
data, header = format_for_columns(packages, options)
File "/usr/local/var/pyenv/versions/3.7.0/lib/python3.7/site-packages/pip/_internal/commands/list.py", line 271, in format_for_columns
row = [proj.project_name, proj.version]
File "/usr/local/var/pyenv/versions/3.7.0/lib/python3.7/site-packages/pip/_vendor/pkg_resources/init.py", line 2589, in version
raise ValueError(tmpl % self.PKG_INFO, self)
ValueError: ("Missing 'Version:' header and/or METADATA file", Unknown [unknown version] (/usr/local/var/pyenv/versions/3.7.0/lib/python3.7/site-packages))

 

# -------------解决方法---------------

so i have been having the same probem so i experimented a bit and i think this could help:

i edited:

~/.local/lib/python3.6/site-packages/pip/_vendor/pkg_resources/init.py

and added just before line 2589 a print so it looks like this

@property def version(self): try: return self._version except AttributeError: version = _version_from_file(self._get_metadata(self.PKG_INFO)) if version is None: print(self._provider.__dict__) #this tmpl = "Missing 'Version:' header and/or %s file" raise ValueError(tmpl % self.PKG_INFO, self) return version

the self is a object filled with None and Unknown data:

{'project_name': 'Unknown', 'py_version': None, 'platform': None, 'location': '~/.local/lib/python3.6/site-packages', 'precedence': -1, '_provider': <pip._vendor.pkg_resources.PathMetadata object at 0x7f0faa49d4e0>, '_key': 'unknown'} {'project_name': 'Unknown', 'py_version': None, 'platform': None, 'location': '~/.local/lib/python3.6/site-packages', 'precedence': -1, '_provider': <pip._vendor.pkg_resources.PathMetadata object at 0x7f0faa49d4e0>, '_key': 'unknown'}

 

but the _provider returns this:

{'module_path': '~/.local/lib/python3.6/site-packages', 'egg_info': '~/.local/lib/python3.6/site-packages/-rpcio-1.18.0.dist-info'} {'module_path': '~/.local/lib/python3.6/site-packages', 'egg_info': '~/.local/lib/python3.6/site-packages/-rpcio-1.18.0.dist-info'}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值