开发者社区> 问答> 正文

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

我的项目对另一个项目有依赖性,我在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`,我可能不会注意到我可能破坏了其他代码?

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 15:52:44 424 0
1 条回答
写回答
取消 提交回答
      1. *

    最好的做法是在两个项目的setup.py中包含一个“ pyyaml == 5.1.2”,install_requires:...`(或您喜欢的“ requirements.txt”)[...] ?

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

    总的来说,我相信将依赖项的版本固定在setup.py(或pyproject.toml)中是一个坏主意,因为最终用户无法(轻易)否决那些依赖项,最终用户会安装项目(doesn (无论是应用程序还是库),都应该对安装的内容有最后决定。另一方面,优良作法是以最终用户可能会选择的“ requirements.txt”文件的形式给出已知有效(因为已经过测试)的固定依赖版本的组合建议。是否使用(对于应用程序,这对于库没有多大意义)。

    阅读例如Donald Stufft的文章“ setup.py vs requirements.txt ”。

      1. *

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

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

    回答来源:stackoverflow

    2020-03-24 15:52:53
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《用管控策略设定多账号组织全局访问边界》 立即下载
王青:如何一天发布10次?基于元数据的持续交付方法 立即下载
一天发布10次-基于元数据的持续交付方法 立即下载