8

给定requirements.txt一个 virtualenv 环境,从脚本中检查是否满足要求并在不匹配的情况下可能提供详细信息的最佳方法是什么?

Pip 通过主要版本更改了它的内部 API,所以我看到了不要使用它的parse_requirements方法的建议。

有一种方法pkg_resources.require(dependencies),但是如何用它的所有花哨来解析需求文件,比如 github 链接等?

这应该很简单,但找不到任何指针。

更新:需要程序化解决方案。

4

1 回答 1

10

您可以将 virtualenv 当前安装的软件包保存pip freeze到一个文件中,比如 current.txt

pip freeze > current.txt

然后,您可以使用如下脚本将其与带有 difflib 的 requirements.txt 进行比较

import difflib

req = open('requirements.txt')
current = open('current.txt')

diff = difflib.ndiff(req.readlines(), current.readlines())
delta = ''.join([x for x in diff if x.startswith('-')])

print(delta)

这应该只显示“requirements.txt”中不在“current.txt”中的包。

于 2016-08-19T20:51:26.867 回答