我的项目依赖于另一个项目,我在setup.py
文件中使用git依赖,如下所示:
setup(
name="cake",
version="0.1",
install_requires=[
"flan @ git+ssh://git@github.com/terrymcguire/flan.git#egg=flan"
]
)
假设它们都依赖于pyyaml
。最佳做法是在两个项目的setup.py
、install_requires: ...
(或requirements.txt
,根据您的喜好(中都包含一个"pyyaml==5.1.2"
,并确保版本相同,还是建议在flan
项目中仅将pyyaml
列为依赖项,然后继承父项目中的版本,尽管pyyaml
是父项目的依赖项还不太清楚,如果有一天我不再依赖flan
,我可能不会注意到我可能破坏了其他代码?
1.
在两个项目的
setup.py
、install_requires: ...
(或您喜欢的requirements.txt
(中都包含一个"pyyaml==5.1.2
"[…]是最佳做法吗?
只有应用程序应该(可能(将需求绑定到特定版本。库应限制为一系列已知的兼容版本(尽可能准确(。
一般来说,我认为将依赖关系的版本固定在setup.py
(或pyproject.toml
(中是个坏主意,因为最终用户(无论是应用程序还是库(都不能(轻易(否决这些依赖关系,最终用户应该对安装的内容拥有最终决定权。另一方面,很好的做法是以requirements.txt
文件的形式推荐已知工作良好的依赖项的固定版本的组合(因为它已经过测试(,最终用户可能会选择使用或不使用(对于应用程序,这对库来说没有多大意义(。
例如,阅读DonaldStuff的文章">setup.py vs requirements.txt"。
2.
是否建议只将pyyaml列为flan项目中的依赖项,然后在父项目中继承版本,尽管那时不太清楚pyyaml是父项目的依赖项[…]?
一般(明显(规则是,所有项目都应该列出所有自己的依赖项,并且只列出自己的依赖关系。其他任何事情都没有任何意义(当然也可能一如既往地有例外(。