pip freeze命令输出中的“pkg-resources == 0.0.0”是什么
当我运行pip freeze
我看到(除其他预期的软件包) pkg-resources==0.0.0
。 我已经看到了一些提到这个包的post(包括这个包),但是没有一个解释它是什么,或者为什么它包含在pip freeze
的输出中。 我想知道的主要原因是出于好奇,而且在某些情况下,在尝试安装包含pip freeze
生成的requirements.txt
文件的软件包(包括pkg-resources==0.0.0
行)(例如当Travis CI尝试通过pip
安装依赖关系并find此行时)。
什么是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
至于你的问题的一部分“是否可以删除这条线”:
在这个问题上,我在这里开发一个与Ubuntu 16.04相同的问题。 当在debian 8.5上运行"pip install -r requirements.txt"
pip会抱怨pkg-resources是“not found”,但是有一个安装了“python-pkg-resources”的全局包,所以依赖关系应该被满足。 在Ubuntu上也是一样:这个包也存在于那里。
正如这里所说的,它似乎是一些“隐式安装包”。
所以:如果你在Debian / Ubuntu上安装了 python-pkg-resources, 那么删除该行应该是安全的 。 我这样做,一切运行良好。 但是,由于我不是这方面的专家,所以应该记住,这可能会导致在另一台机器上部署时出现复杂情况。