我的目标是一种简单而正确的方法来导出我的venv
. 在最佳情况下,结果requirements.txt
适用于所有兼容系统。
目前我使用pip freeze > requirements.txt
. 这使用了==
“版本匹配子句”。在其他系统上,该文件可能由于版本冲突而无法工作,尽管它是兼容的。
PEP 440中还有一个~=
“兼容条款”。但是,我在 pip freeze docs中找不到相应的选项。awk
使用“查找和替换”或类似将 == 替换为 ~= 的工具可以正常工作。
我天真的结论是,这~=
将是在 中使用的理想子句requirements.txt
。然而,当我查看流行的软件包时,他们经常使用它们>=
来指定版本。例如在urllib3。
~= 有一个我没有看到的缺点吗?
如果不是这样:为什么在这么多包中使用 >= ?
编辑:
Pigar有一个本地使用 >= 的选项,并且这里有一个与 freeze 的比较。显然,他们也不使用〜=。
然而,我仍然不确定该使用哪一个,因为当发生重大版本更改时 >= 可能会中断。此外,较低次要版本的软件包将被标记为不兼容,尽管它们应该是兼容的。