与您自己的依赖项共享第三方依赖项的最佳实践

我的项目对另一个项目有依赖关系,我在setup.py文件中使用git依赖关系,如下所示:

setup(
    name="cake",version="0.1",install_requires=[
        "flan @ git+ssh://git@github.com/terrymcguire/flan.git#egg=flan"
    ]
)

假设它们都是都依赖pyyaml。最好的做法是在两个项目的"pyyaml==5.1.2"setup.py(或您想要的install_requires: ...)中都包含一个requirements.txt,并确保版本相同或建议不要将pyyaml列为flan项目中的依赖项,然后再继承父项目中的版本,即使现在不太清楚pyyaml是父项目,如果有一天我不再依赖flan,我可能不会注意到我可能破坏了其他代码?

kewen163 回答:与您自己的依赖项共享第三方依赖项的最佳实践

1。

最佳做法是在两个项目的pyyaml==5.1.2setup.py(或您希望的install_requires: ...)中都包含一个“ requirements.txt”吗? / p>

仅应用程序可以(可能)将需求 pin 固定到特定版本。图书馆应限制在一定范围内的已知兼容版本(尽可能准确)。

总的来说,我认为在setup.py(或pyproject.toml)中固定依赖项的版本是一个坏主意,因为最终用户不能(轻易)推翻那些依赖项,最终安装项目(与应用程序或库无关)以及应该对安装的内容有最后决定的人。另一方面,优良作法是以requirements.txt文件的形式给出最终用户可能会选择的{0}文件形式的已知运行良好(因为已经过测试)的依赖的固定版本的组合建议是否使用(对于应用程序,这对于库来说没有多大意义)。

例如阅读Donald Stufft's article "setup.py vs requirements.txt"

2。

是否建议仅在flaan项目中将pyyaml列为依赖项,然后在父项目中继承该版本,即使现在还不清楚pyyaml是父项目的依赖项[...]?

一般(显而易见的)规则是,所有项目都应列出所有其自己的依赖项,并且仅列出其自己的依赖项。任何其他事情都没有任何意义(当然,一如既往地可能会有例外)。

本文链接:https://www.f2er.com/2676099.html

大家都在问