【问题标题】:Tell the module requirements in a particular directory (package)告诉特定目录(包)中的模块需求
【发布时间】:2019-12-02 23:07:28
【问题描述】:

在我的办公室里,我们的代码目录结构非常复杂。

我们有一个 libs 模块来删除我们的大应用程序(或一组应用程序......都生活在一个公共目录下)的其他部分使用的“常见”东西。

libs/ 目录中的代码需要安装某些软件包才能运行。在上述libs/ 目录中,我们有一个requirements.txt 文件应该列出了其中的事物(事物是Python代码)工作所需的依赖关系。我们一直在手动填充requirements.txt文件,跟踪“如果这个.py文件使用这个模块,我们应该将它添加到需求文件中”所以它几乎可以肯定的是,现在我们已经忘记添加一些必需的模块了。

由于我们拥有复杂的结构(有些部分使用pipenv,其他部分有自己的requirements.txt...)很难知道最终是否会安装所需的模块。

所以我想确保这个libs/ 目录(咳咳……模块)在其libs/requirements.txt 中列出了所有依赖项。

这可能吗?理想情况下是 “运行这个命令传递 /libs/ 作为参数,它会扫描目录并告诉你在其中找到的 py(s) 需要哪些包”

提前谢谢你。

【问题讨论】:

    标签: python dependencies requirements.txt


    【解决方案1】:

    不幸的是,python 直到运行时才知道它的依赖项是否得到满足。 requirements.txt 只是 pip 等工具的帮助文件,需要手动更新。

    也就是说,你可以

    • 使用os模块递归获取文件夹中所有*.py文件的列表
    • 解析它们中的每一个以获取格式为import aaa.bbbfrom aaa import bbb 的行
    • 保留一组导入

    但是,即使在这种情况下,导入模块的名称​​也不与您需要传递给 pip 的名称相同(例如,import yamlrequirements.txt 中需要 pyyaml ),但至少它可能暗示缺少什么。

    【讨论】:

      猜你喜欢
      • 2010-10-21
      • 1970-01-01
      • 2013-11-30
      • 2021-05-07
      • 2015-08-26
      • 2012-11-11
      • 2016-08-22
      • 2020-10-02
      相关资源
      最近更新 更多