【问题标题】:Updating dependencies of downstream projects using pip requirements.txt使用 pip requirements.txt 更新下游项目的依赖项
【发布时间】:2020-01-16 18:57:54
【问题描述】:

我有一个供整个组织的其他应用程序使用的 python 包,我们称之为buildtools

我组织中的其他应用程序已通过

安装了此软件包
pip install git+https://${OAUTH_TOKEN}:x-oauth-basic@github.com/my_organization/buildtools#egg=buildtools

我想向buildtools 添加一个需要第 3 方软件包的新功能,我们就说它的requests。所以在buildtools里面我把requests加到requirements.txt里面,导入就行了。

但我组织中的其他应用程序都没有将requests 作为它们在requirements.txt 中的依赖项之一。

当我合并我的新代码并更新包时,我相信我们会在使用buildtools 的下游应用程序中遇到一些ImportError: No module named requests 错误。

如何确保使用buildtools 包的任何应用程序在获得最新的buildtools 时安装requests 包?

换句话说,如何递归更新buildtools的依赖关系?

我知道我可以在我的组织中使用buildtools 的所有应用程序中将requests 添加到requirements.txt,但我正在努力避免这种情况。

【问题讨论】:

    标签: python pip dependencies packaging requirements.txt


    【解决方案1】:

    经过进一步研究,我发现setup.py 中的install_requires 正是我想要的。 This example explains it well.

    【讨论】:

      【解决方案2】:

      你为什么不直接跑

      pip install -r requirements.txt
      

      如前所述,例如here?

      这是递归更新/安装所需软件包的最佳、最轻松的方式。

      【讨论】:

      • 据我了解,这是行不通的,因为一些运行我的包的机器上没有安装我想使用的第 3 方包。因此,如果我使用未安装在这些机器上的软件包更新 my requirements.txt,则会出现“找不到模块”错误。那有意义吗?我很可能是错的......
      • 不,您应该将更新后的requirements.txt 传送到目标机器并从目标机器运行上面的代码。在这种情况下,pip 将按照requirements.txt 中的说明自动下载和安装包。
      猜你喜欢
      • 2014-07-21
      • 2019-01-10
      • 2021-08-05
      • 1970-01-01
      • 2021-04-11
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      相关资源
      最近更新 更多