我对使用doit
自动化python软件包的构建过程感兴趣。
如果可能,我希望doit
重新执行任务,如果它依赖的任何用户创建的源文件已更改。
据我了解,最好的方法是使用file_dep
键和相关源文件的列表,但是在生成此列表时遇到很多麻烦。
我尝试使用sys.modules
和inspect.getmembers()
,但是这些解决方案无法处理不导入模块的导入语句,例如from x import Y
,这很常见。出现在我正在开发的程序包中。
我研究的另一种方法是使用snakefood
工具,该工具最初看起来完全可以实现我想要的功能,为给定路径中的每个文件生成文件依赖关系列表。
不幸的是,该工具似乎对Python 3的支持有限,这使其对我的软件包毫无用处。
是否有人对如何在Python 3中获得类似snakefood
的功能有所了解,还是将我的所有源代码更改为仅导入模块的唯一选择?
答案 0 :(得分:0)
做tutorial本身是关于创建python模块导入图!
它使用import_deps包,类似于 snakefood 。
请注意,对于您的用例,您将需要在执行Task操作期间自行修改file_dep
。为此,您需要将task
参数传递给您的操作(如here所述)。