python-3.x pip freeze命令输出中的“pkg-resources==0.0.0”是什么

rvpgvaaj  于 2023-05-08  发布在  Python
关注(0)|答案(3)|浏览(168)

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

什么是pkg-resources,是否可以从requirements.txt中删除这一行?

更新:

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

bt1cpqcv

bt1cpqcv1#

根据https://github.com/pypa/pip/issues/4022,这是Ubuntu向pip提供不正确的元数据导致的错误。所以,不,似乎没有一个很好的理由为这种行为。我在Ubuntu上提交了一个后续bug。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
  • 编辑2022年7月6日:*

我被告知,软件包名称因使用的系统而异(pkg-resources vs pkg_resources)。请参阅此答案所附的注解,了解不同版本Debian/Ubuntu之间的使用差异。由于pkg-resources在发布时(大约6年前)是有问题的系统的历史正确的软件包名称,因此在此答案中将保持不变。

eimct9ow

eimct9ow2#

至于你的问题“删除这条线可以吗?”":
我在ubuntu16.04上开发时遇到了同样的问题,需求中就有这一行。当在运行"pip install -r requirements.txt"的debian 8.5上部署时,pip会抱怨pkg-resources“找不到”,但是已经安装了一个全局软件包“python-pkg-resources”,所以应该满足依赖关系。在ubuntu上:包也在那里。
正如here所述,它似乎是一些“隐式安装的软件包”。
所以:如果你在Debian/Ubuntu上安装了python-pkg-resources,那么删除这一行应该是安全的。我这样做了,一切都很好。但是,由于我不是这方面的Maven,因此您应该记住,在另一台机器上部署时,这可能会导致并发症。

gkn4icbw

gkn4icbw3#

我在这个链接中找到了答案:pip freeze includes "pkg-resources==0.0.0" in comment 10 by:Louis Bouchard(路易斯)发布:2019-11-16:
对我很有效。但我不是一个Maven,所以,如果有人更好地理解它,如果解释一下就好了。
值得注意的是,问题来自virtualenv的debianized版本,它使用了在创建时添加到virtualenv中的pkg_resource的解捆绑版本:

$ 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
$

相关问题