首页 > 解决方案 > 如何列出模块所依赖的用户创建的 python 文件?

问题描述

我有兴趣使用doit自动化 python 包的构建过程。如果可能的话,如果它所依赖的任何用户创建的源文件发生了变化,我想doit重新执行一个任务。据我了解,完成此操作的最佳方法是使用file_dep密钥和依赖源文件的列表,但是我在生成此列表时遇到了很多麻烦。

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

我调查的另一条路线是使用该snakefood工具,它最初看起来就像我想要的那样,为给定路径中的每个文件生成文件依赖项列表。不幸的是,这个工具似乎对 Python 3 的支持有限,使它对我的包毫无用处。

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

标签: pythonpython-3.xrecursiondependenciesdoit

解决方案


doit教程本身就是关于创建 python 模块导入图的!

它使用import_deps包,它类似于蛇食

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


推荐阅读