繁体   English   中英

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

[英]What is "pkg-resources==0.0.0" in output of pip freeze command

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

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

更新:

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

根据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

编辑 2022 年 7 月 6 日:

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

至于你的问题“删除这一行可以吗? ”:

我在 ubuntu 16.04 上开发时遇到了同样的问题,要求就是这样。 在运行"pip install -r requirements.txt"的 debian 8.5 上部署时,pip 抱怨 pkg-resources 是“未找到”,但是安装了一个全局包“python-pkg-resources”,因此应该满足依赖关系。 在 ubuntu 上也是如此:该软件包也存在于那里。

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

所以:如果你在安装了 python-pkg-resources 的 Debian/Ubuntu 上,删除该行应该是安全的 我这样做了,一切都运行良好。 但是,由于我不是这方面的专家,因此您应该记住,在另一台机器上部署时这可能会导致复杂化。

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

作者:Louis Bouchard (路易斯) 在 2019-11-16 上写道:

它对我有用。 但我ḿ不是专家,所以如果有人更好地理解它,如果解释它会很棒。

你好,

对于它的价值,问题来自 virtualenv 的 debianized 版本,它使用了 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
$

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

sudo apt remove virtualenv
sudo pip install -U virtualenv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM