pip Frozen命令输出中的“ pkg-resources == 0.0.0”是什么


157

运行时,pip freeze我看到了(在其他预期的包装中)pkg-resources==0.0.0。我见过几个帖子提的这个包(包括这一次),但没有说明它是什么,或者为什么它被包含在输出pip freeze。我想知道的主要原因是出于好奇,而且,它似乎打破东西在某些情况下,试图用一个安装包时,requirements.txt用生成的文件pip freeze,其中包括pkg-resources==0.0.0线(例如,当特拉维斯CI试图通过安装的依赖pip,并认为这线)。

什么是pkg-resources,可以从中删除此行requirements.txt吗?

更新:

我发现,这行似乎只在输出存在pip freeze我在的时候virtualenv。我仍然不确定它是什么或它做什么,但是我将进一步调查它可能与有关virtualenv


“在某些情况下,当尝试使用通过pip冻结生成的requirements.txt文件安装包含pkg-resources == 0.0.0行的软件包时,似乎会破坏事情。” 。你能举个例子吗?
Dimitris Fasarakis Hilliard

@吉姆,好点。我添加了遇到的示例。
elethan

嗯,你的版本是pip?我认为这可能是他们在旧版本中错过的东西,因为在此8.1.2我没有任何条目pkg-resources。(这是不应该的,因为我很确定pkg-resources附带了setuptools)。
Dimitris Fasarakis Hilliard

1
@Jim它只是与我有关virtualenv,实际上,当我不在 virtualenv中时,我也看不到它。这仍然不能解释它是什么,但至少是我可以调查的线索。
elethan

Answers:


181

根据https://github.com/pypa/pip/issues/4022,这是由于Ubuntu提供不正确的元数据给pip而导致的错误。因此,似乎没有充分的理由证明这种行为。我向Ubuntu提交了一个后续错误。https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

要备份上一个答案,应安全地从您的requirements.txt中删除该行。这是一个示例Make文件节,它可以安全地冻结您的软件包列表(放入Makefile并使用运行make freeze):

freeze:
    pip freeze | grep -v "pkg-resources" > requirements.txt

9
这不是Ubuntu特有的错误,debian也有同样的问题
水母

1
起初@MohammedShareefC想法似乎可行,但是后来我明白了AttributeError: module 'pkg_resources' has no attribute 'iter_entry_points',所以我认为最好是将其从中删除requirements.txt
引起了

2
尝试部署到heroku时仍然引起头痛
Martins

3
ubuntu 18.04似乎仍然是一个问题
Carmine Tambascia

3
在Ubuntu 19.04上Python 3.8仍然存在问题
eric.frederich

13

至于您的问题部分“ 可以删除此行吗? ”:

我在ubuntu 16.04上开发时遇到了同样的问题,并且要求非常一致。在运行"pip install -r requirements.txt"Dep 的Debian 8.5上进行部署时,会抱怨“找不到pkg-resources”,但是安装了一个全局包“ python-pkg-resources”,因此应该满足相关性。在ubuntu上也一样:软件包也在那里存在。

如此处所述它似乎是一些“隐式安装的软件包”。

所以:如果您在Debian / Ubuntu上安装了python-pkg-resources,则应该安全地删除该行。我这样做了,一切运行正常。但是,由于我不是这方面的专家,因此请记住,这可能会导致在另一台计算机上部署时带来复杂性。


谢谢(你的)信息。我最终也删除了它,也没有看到任何后果,但是您提到的相同警告当然也适用。您也要在哪里安装virtualenv
elethan

是的,我尝试从virtualenv内部安装。由于存在系统范围的软件包,并且我不想搞砸,所以我没有尝试在系统范围内按点安装。
karlsebal's

1

在此链接中找到了这个答案:https : //bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

作者:路易斯·布沙德(路易斯)于2019-11-16发表:

它为我工作。但是我不是专家,所以,如果有人更好地理解它,那么对它进行解释会很棒。

你好,

就其价值而言,问题出在virtualenv的去版本化版本中,该版本使用了已打包的pkg_resource版本,该版本已在创建时添加到virtualenv中:

$ virtualenv .
Running virtualenv with interpreter /usr/bin/python2
New python executable in /home/caribou/git/quividi/test/bin/python2
Also creating executable in /home/caribou/git/quividi/test/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ pip freeze
pkg-resources==0.0.0

使用pip安装的virtualenv版本是可行的解决方法:

$ sudo apt -y purge python3-virtualenv virtualenv tox
$ pip install virtualenv
$ virtualenv .
pip install virtualenv
Collecting virtualenv
  Downloading https://files.pythonhosted.org/packages/c5/97/00dd42a0fc41e9016b23f07ec7f657f636cb672fad9cf72b80f8f65c6a46/virtualenv-16.7.7-py2.py3-none-any.whl (3.4MB)
    100% |████████████████████████████████| 3.4MB 351kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.7.7
$ virtualenv .
New python executable in /home/caribou/git/quividi/test/bin/python
Installing setuptools, pip, wheel...
done.
$ source bin/activate
$ pip freeze
$

路易(Louis)


-2

在Ubuntu上,您可以通过删除Ubuntu virtualenv软件包并从安装新版本来解决此问题pip

sudo apt remove virtualenv
sudo pip install -U virtualenv
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.