PEP508:为什么版本要求或 URL 而不是两者?

PEP508: why either version requirement or URL but not both?

setup.py 文件中配置 install_requires=[...] 时,我们可以指定任一版本号:

package >= 1.2.3

或来源:

package @ git+https://git.example.com/some/path/to/package@master#egg=package

但我没有管理员指定两者,我尝试的所有操作都出现错误。

看着PEP 508,好像是有意的:

specification = wsp* ( url_req | name_req ) wsp*

其中 wsp* 仅表示可选空格。

  1. 我没看错吗,这样写是不可能的? package >= 1.2.3 @ git+https://...

  2. 做出这个决定的原因是什么?

我认为这是因为从 URL/Github 获取 python 包无法像通过 PyPi 存储的包那样获取历史 builds/packages .

Github/URLs 引用单个代码快照,如果您在 GitHub 中有标签或发布分支,您可以模拟获取特定版本并更新 URL 以引用这些版本:

git+https://git.example.com/some/path/to/package@master#egg=package git+https://git.example.com/some/path/to/package@develop#egg=package git+https://git.example.com/some/path/to/package@1.4.2#egg=package