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

ele*_*han 116 python pip python-3.x ubuntu-16.04

当我跑步时,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

更新:

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

Cra*_*ght 137

根据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
Run Code Online (Sandbox Code Playgroud)

  • 这不是Ubuntu特有的bug,debian也有同样的问题 (6认同)
  • Ubuntu 20.04 上 Python 3.8 的 venv 仍然存在问题 (5认同)
  • 怎么样做一个'pip uninstall pkg-resources`? (4认同)
  • 这似乎仍然是 ubuntu 18.04 的问题 (4认同)
  • Ubuntu 19.04 上的 Python 3.8 仍然存在问题 (3认同)
  • 尝试部署到 heroku 时仍然引起头痛 (2认同)

kar*_*bal 10

至于你的问题部分" 可以删除这一行吗? ":

我在ubuntu 16.04上开发这个问题时遇到了同样的问题.当在debian 8.5运行"pip install -r requirements.txt"pip 上进行部署时,抱怨pkg-resources"找不到",但是有一个全局包安装了"python-pkg-resources",因此应该满足依赖性.在ubuntu上也是如此:包也存在于那里.

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

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