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

标签 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 的功能,或者是将我的所有源代码更改为仅导入模块的唯一选择?

最佳答案

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

它使用 import_deps包,它类似于snakefood

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

关于python - 如何列出模块所依赖的用户创建的 python 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56048226/

相关文章:

python - 如何在 Python 中分析内存使用情况?

python - 如何在 Python2 和 3 上打开一个已知编码的文件?

python - 导入cv2在IDLE上工作,但在命令提示符下出错

python - 为什么 a//b 和 np.floor(a/b) 产生不同的结果?

python - 在 Python 中设置递归函数来计算包含排除

java - 如何翻转这把尺子?

python - 优化 Python/Numpy 中的数组元素移位

Python - 为什么我不能在 print 函数中使用生成器?

python - 使用 python 从 10 到 N 的步数

java - 如何获得 Java 中具有重复项的所有组合(递归)?