【发布时间】:2019-09-26 15:06:00
【问题描述】:
我有兴趣使用doit 来自动化python 包的构建过程。
如果可能,我希望doit 在它所依赖的任何用户创建的源文件发生更改时重新执行任务。
据我了解,完成此操作的最佳方法是使用 file_dep 键和依赖源文件的列表,但是我在生成此列表时遇到了很多麻烦。
我尝试过使用sys.modules和inspect.getmembers(),但是这些解决方案无法处理不导入模块的导入语句,例如from x import Y,不幸的是这在我的包中很常见发展中。
我研究的另一条路线是使用snakefood 工具,它最初看起来就像我想要的那样,为给定路径中的每个文件生成文件依赖项列表。
不幸的是,这个工具似乎对 Python 3 的支持有限,因此对我的包毫无用处。
是否有人对如何在 Python 3 中获得类似 snakefood 的功能有任何见解,或者是将我的所有源代码更改为仅导入模块的唯一选择?
【问题讨论】:
-
您可以挂钩
import以了解每个导入,甚至是已经在其他地方导入的模块。但这仅适用于您的“测试”覆盖范围,因为导入可以在函数内部(任何地方)发生。
标签: python python-3.x recursion dependencies doit