6

我正在使用pbr,它使用requirements.txt文件来查找依赖项。

我有一条线,当requirements.txtgit+ssh://git@github.com/user/repo.git跑步时它可以工作pip install -r requirements.txt

但是,当我运行时,我遇到python setup.py build了错误:

error in setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Invalid requirement, parse error at "'+ssh://g'"

许多 Stack Overflow 答案专门在使用时处理此问题,setuptools并且所有答案都建议将 Git 依赖项dependency_links放入setup.py.

我希望 pbr 能够以requirements.txt一种在我同时运行python setup.py buildpip install -r requirements.txt.

这可能吗?是否有任何关闭的解决方法?

4

1 回答 1

2

在您提供的示例中,pbr 将整行传播到 install_requires,这会产生无效行。

通过#egg=name 提供需求名称

为了使其按预期工作,该 url 需要一个#egg后缀来告诉 pbr 该 URL 提供了什么要求。如果 URL 看起来像这样,pbr 将从该部分中删除一个需求#egg并仅传播repoinstall_requires

git+ssh://git@github.com/user/repo.git#egg=repo

版本约束

如果包含一个版本,pbr 将在其上添加一个>=约束。所以这将repo>=1.2.3变成install_requires

git+ssh://git@github.com/user/repo.git#egg=repo-1.2.3

依赖链接

它还将提取包含完整 URL 的dependency_link 项。您可以通过传递--process-dependency-links给 pip 来使用它。默认情况下,pip 将返回错误Could not find a version that satisfies the requirement repo,除非包也可以通过 PyPI 获得。如果--process-dependency-links指定了,那么它将改为从 Git URL 获取它。

使用 -e 标志,或要求pbr>=1.9.0

在 1.9.0 版本之前,pbr 只识别httphttpsURL,除非行以-e. 它在此提交git://中添加了对, git+ssh://, git+https://without的支持。-e

于 2018-06-21T17:23:32.530 回答