Python 为什么pip会冻结列表;包装资源==0.0.0“吗;?

Python 为什么pip会冻结列表;包装资源==0.0.0“吗;?,python,pip,virtualenv,python-3.5,ubuntu-16.04,Python,Pip,Virtualenv,Python 3.5,Ubuntu 16.04,在Ubuntu 16.04和virtualenv 15.0.1以及Python 3.5.2(两者都安装了apt)上,当我使用 virtualenv.virtualenvs/wtf-p$(哪个python3)--没有站点包 source.virtualenvs/wtf/bin/activate 我得到以下输出: 已经在使用解释器/usr/bin/python3 使用基本前缀“/usr” 新的python可执行文件位于/home/das-g/.virtualenvs/wtf/bin/python3

在Ubuntu 16.04和virtualenv 15.0.1以及Python 3.5.2(两者都安装了
apt
)上,当我使用

virtualenv.virtualenvs/wtf-p$(哪个python3)--没有站点包
source.virtualenvs/wtf/bin/activate
我得到以下输出:

已经在使用解释器/usr/bin/python3
使用基本前缀“/usr”
新的python可执行文件位于/home/das-g/.virtualenvs/wtf/bin/python3中
还在/home/das-g/.virtualenvs/wtf/bin/python中创建可执行文件
安装setuptools、pkg_资源、pip、wheel…完成。
实际上,
pip freeze--all
列出了这4个包:

pip==8.1.2
pkg-resources==0.0.0
setuptools==25.2.0
wheel==0.29.0
不过,我希望
pipfreeze
(没有
--all
)会忽略这些隐式安装的软件包。它确实省略了其中一些资源,但没有
pkg资源

pkg-resources==0.0.0
(顺便说一句,对于
pip冻结-本地

虽然这与帮助文本一致

$>pip freeze--help | grep'\--all'
--所有这些都不会在输出中跳过这些包:pip、setuptools、distribute、wheel

pip-freeze
输出中拥有
pkg资源
,似乎不是很有用,甚至可能有害。(我怀疑这就是为什么运行
pip-sync
from会从虚拟环境中卸载pkg资源,从而微妙地破坏环境。)有什么好的理由让
pip-freeze
列出
pkg资源而不是省略它吗?据我所知,它没有在Ubuntu 14.04上列出它(使用Python 3.4).

根据,这是Ubuntu向pip提供不正确的元数据导致的一个错误。因此,不,这似乎不是一个好的原因。我向Ubuntu提交了一个后续错误。

我在我的虚拟环境中也遇到了同样的问题。我用
pip卸载pkg resources==0.0.0
删除了它,我不知道为什么很可能会发生这种情况。这发生在我身上的是一个不同的包,它实际上对我的项目至关重要。我找到的解决方案是在PyPi上用最新的可用版本编辑requirements.txt。我猜,一种可能是最初安装的版本在PyPi上不再可用。令人惊讶的是,没有答案为此,我创建了一个记录单,它可能最终会提供一个答案:Debian bug report也是关于这个问题的。警告:这可能会微妙地破坏你的virtualenv。@das-g以什么方式破坏virtualenv?对不起,我不太记得当时的问题是什么,我现在手头没有Ubuntu系统。IIRC,
pkg resources
是virtualenv不可分割的一部分,Python、pip或virtualenv本身都需要它。不确定当它丢失时,什么东西会停止工作。这也会影响Debian用户。看起来修复程序是为Ubuntu和Debian()设计的。