如何为python代码做Makefile依赖
-
04-07-2019 - |
题
我有一堆C文件是由一系列python程序生成的,这些程序包含许多共享的python模块,我需要在make系统中对此进行说明。
很容易枚举需要运行哪个python程序来生成每个C文件。我找不到一个好的解决方案是确定那些程序所依赖的其他python文件。我需要这个,所以如果其中一个共享python文件发生变化,make会知道需要重新生成什么。
是否有一个很好的系统来从python源集合中生成make风格依赖规则?
解决方案
modulefinder 可用于获取依赖图。
其他提示
import
语句几乎都是依赖项。导入语句有两种相关形式:
import x, y, z
from x import a, b, c
您还需要用于构建 sys.path
的 PYTHONPATH
和 sites
信息。这显示了模块和包的物理位置。
处理起来很麻烦,因为你必须对你导入的所有模块中的所有导入进行传递关闭。
作为替代方法,您可以使用 -v
选项获取导入和物理文件的完整列表。这会生成一个日志,您可以将其编辑为依赖项的平面列表。
例如,当我做
时>>> import math
我在日志
中看到了这一点dlopen("/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/math.so", 2);
import math # dynamically loaded from /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/math.so
不隶属于 StackOverflow