为什么pip冻结列表“pkg-resources == 0.0.0”?

时间:2016-08-17 08:58:16

标签: python pip virtualenv python-3.5 ubuntu-16.04

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

创建和激活新的Python虚拟环境时
virtualenv .virtualenvs/wtf -p $(which python3) --no-site-packages
source .virtualenvs/wtf/bin/activate

我得到以下输出:

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

pkg-resources输出中pip freeze似乎没有用,甚至可能有害。 (我怀疑这是为什么从pip-tools运行pip-sync从虚拟环境中卸载pkg-resources,从而巧妙地破坏环境。) pip freeze列出{{{{{{{{{{{{{{{ 1}}而不是省略它?据我记得,它没有在Ubuntu 14.04(使用Python 3.4)上列出它。

3 个答案:

答案 0 :(得分:20)

根据https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463,这是由于Ubuntu向pip提供不正确的元数据而导致的错误。所以,似乎没有这种行为的充分理由。我向Ubuntu提交了一个后续错误。 {{3}}

答案 1 :(得分:1)

我在虚拟环境中遇到了同样的问题。我用SIGIO

删除了它

答案 2 :(得分:0)

正如其他答案中提到的,这是一个错误。但是,在 linux 上,您可以使用以下命令自动删除包含 pkg-resources==0.0.0 的行。

$ pip freeze > requirements.in && grep -v "pkg-resources==0.0.0" requirements.in > temp && mv temp requirements.in