Python 告诉特定目录(包)中的模块要求

Python 告诉特定目录(包)中的模块要求,python,dependencies,requirements.txt,Python,Dependencies,Requirements.txt,在我的办公室里,当涉及到我们的代码时,我们有一个相当复杂的目录结构 我们有一个libs模块,用于删除大型应用程序的其他部分(或一组应用程序…它们都位于一个公共目录下)使用的“公共”内容 libs/目录中的代码需要安装某些软件包才能正常工作。在所说的libs/目录中,我们有一个requirements.txt文件,该文件可能列出了其中的东西(即Python代码)工作所需的依赖项。我们一直在手动填写requirements.txt文件,跟踪“如果此.py文件使用此模块,我们应该将其添加到需求文件”,

在我的办公室里,当涉及到我们的代码时,我们有一个相当复杂的目录结构

我们有一个
libs
模块,用于删除大型应用程序的其他部分(或一组应用程序…它们都位于一个公共目录下)使用的“公共”内容

libs/
目录中的代码需要安装某些软件包才能正常工作。在所说的
libs/
目录中,我们有一个
requirements.txt
文件,该文件可能列出了其中的东西(即Python代码)工作所需的依赖项。我们一直在手动填写
requirements.txt
文件,跟踪“如果此.py文件使用此模块,我们应该将其添加到需求文件”,因此几乎可以肯定,到目前为止,我们已经忘记添加一些必需的模块

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

因此,我想确保这个
libs/
目录(cough,cough…模块)的
libs/requirements.txt
中列出了它的所有依赖项

可能吗?理想情况下,它应该是“运行此命令,将
/libs/
作为参数传递,它将扫描目录并告诉您在其中找到的py需要哪些包”


先谢谢你

不幸的是,python直到运行时才知道其依赖关系是否得到满足
requirements.txt
只是pip和类似工具的帮助文件,您必须手动更新它

也就是说,你可以

  • 使用
    os
    模块递归获取文件夹中所有
    *.py
    文件的列表
  • 分析其中每一行的格式为
    import aaa.bbb
    from aaa import bbb
  • 保留一组导入
但是,即使在这种情况下,导入模块的名称也与需要传递给pip的名称不同(例如,
import yaml
requirements.txt中的
requires
pyyaml
),但至少它可能是缺少什么的提示