什么是" pkg-resources == 0.0.0"在pip freeze命令的输出中

时间:2016-09-19 16:36:39

标签: python python-3.x pip ubuntu-16.04

当我运行pip freeze时,我看到(在其他预期的包中)pkg-resources==0.0.0。我看过一些帖子提到这个包(包括this one),但没有一个解释它是什么,或者为什么它包含在pip freeze的输出中。我想知道的主要原因是出于好奇,而且,在某些情况下,当尝试安装包含requirements.txt pip freeze生成的pkg-resources==0.0.0文件的软件包时,似乎会破坏某些内容line(例如当Travis CI尝试通过pip安装依赖项并找到此行时)。

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

更新

我发现当我在pip freeze时,此行似乎只存在于virtualenv的输出中。我仍然不确定它是什么或它做了什么,但我会进一步调查,知道它可能与virtualenv有关。

4 个答案:

答案 0 :(得分:110)

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

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

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

答案 1 :(得分:8)

至于问题部分" 可以删除此行吗?":

我在ubuntu 16.04上开发这个问题时遇到了同样的问题。在运行"pip install -r requirements.txt"点的debian 8.5上进行部署时,抱怨pkg-resources未被发现"但是安装了一个全局软件包" python-pkg-resources"所以应该满足依赖性。在ubuntu上也是如此:包也存在。

如上所述,here似乎是一些"隐式安装的软件包"。

所以:如果您使用的是安装了python-pkg-resources的Debian / Ubuntu,那么删除该行应该是安全的。我这样做了,一切都运行良好。但是,由于我不是这方面的专家,因此请记住,在其他计算机上部署时可能会导致并发症。

答案 2 :(得分: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
$

hth, ...路易

答案 3 :(得分:-1)

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

sudo apt remove virtualenv
sudo pip install -U virtualenv