为什么pip freeze列出了"pkg-resources==0.0.0"?

6 浏览
0 Comments

为什么pip freeze列出了"pkg-resources==0.0.0"?

在Ubuntu 16.04上,使用virtualenv 15.0.1和Python 3.5.2(都是使用apt安装的),当我创建并激活新的Python虚拟环境时,我会得到以下输出:

Already using interpreter /usr/bin/python3

Using base prefix '/usr'

New python executable in /home/das-g/.virtualenvs/wtf/bin/python3

Also creating executable in /home/das-g/.virtualenvs/wtf/bin/python

Installing setuptools, pkg_resources, pip, wheel...done.

实际上,pip freeze --all列出了这4个包:

pip==8.1.2
pkg-resources==0.0.0
setuptools==25.2.0
wheel==0.29.0

然而,我期望pip freeze(不带--all)会省略这些隐式安装的包。它确实省略了其中一些,但没有省略pkg-resources

pkg-resources==0.0.0

(同样适用于pip freeze --local

尽管这与帮助文本一致

$> pip freeze --help | grep '\--all'
  --all                       Do not skip these packages in the output: pip, setuptools, distribute, wheel

但在pip freeze的输出中包含pkg-resources似乎并没有太大用处,甚至可能会有害。 (我怀疑这就是为什么从pip-tools运行pip-sync会从虚拟环境中卸载pkg-resources,从而微妙地破坏环境的原因。)有没有任何充分的理由让pip freeze列出pkg-resources而不是省略它?据我记得,在Ubuntu 14.04上(带有Python 3.4)时,它并没有列出它。

0
0 Comments

https://github.com/pypa/pip/issues/4022所述,这是一个由于Ubuntu向pip提供错误的元数据而导致的bug。因此,似乎没有一个很好的理由解释这种行为。我向Ubuntu提交了一个后续bug。https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

这也会影响到Debian用户。看起来Ubuntu已经修复了这个问题,见原始bug报告的最新评论和Debian(#1 #2)。

0
0 Comments

在虚拟环境中,我也遇到了同样的问题。我通过pip uninstall pkg-resources==0.0.0命令将其移除了。

警告:这可能会对您的虚拟环境造成微妙的破坏。

-g 它可能以何种方式破坏虚拟环境?

抱歉,我不太记得当时的问题是什么了,而且我现在手头也没有Ubuntu系统。据我记得,pkg-resources是虚拟环境的一个重要组成部分,被Python、pip或者可能是virtualenv本身所需要。不确定当它缺失时会有什么具体功能无法正常工作。

0