如何列出模块所依赖的用户创建的python文件?

时间:2019-05-08 20:01:37

标签: python python-3.x recursion dependencies doit

我对使用doit自动化python软件包的构建过程感兴趣。 如果可能,我希望doit重新执行任务,如果它依赖的任何用户创建的源文件已更改。 据我了解,最好的方法是使用file_dep键和相关源文件的列表,但是在生成此列表时遇到很多麻烦。

我尝试使用sys.modulesinspect.getmembers(),但是这些解决方案无法处理不导入模块的导入语句,例如from x import Y,这很常见。出现在我正在开发的程序包中。

我研究的另一种方法是使用snakefood工具,该工具最初看起来完全可以实现我想要的功能,为给定路径中的每个文件生成文件依赖关系列表。 不幸的是,该工具似乎对Python 3的支持有限,这使其对我的软件包毫无用处。

是否有人对如何在Python 3中获得类似snakefood的功能有所了解,还是将我的所有源代码更改为仅导入模块的唯一选择?

1 个答案:

答案 0 :(得分:0)

tutorial本身是关于创建python模块导入图!

它使用import_deps包,类似于 snakefood

请注意,对于您的用例,您将需要在执行Task操作期间自行修改file_dep。为此,您需要将task参数传递给您的操作(如here所述)。