我有一堆 C 文件,它们是由一组具有许多共享 python 模块的 python 程序生成的,我需要在我的 make 系统中考虑到这一点。
枚举需要运行哪个 python 程序来生成每个 C 文件很容易。我找不到一个好的解决方案是确定这些程序依赖于哪些其他 python 文件。我需要这个,所以如果共享的 python 文件之一发生更改,make 将知道需要重新生成什么。
是否有一个很好的系统可以从 python 源的集合中生成样式依赖规则?
我有一堆 C 文件,它们是由一组具有许多共享 python 模块的 python 程序生成的,我需要在我的 make 系统中考虑到这一点。
枚举需要运行哪个 python 程序来生成每个 C 文件很容易。我找不到一个好的解决方案是确定这些程序依赖于哪些其他 python 文件。我需要这个,所以如果共享的 python 文件之一发生更改,make 将知道需要重新生成什么。
是否有一个很好的系统可以从 python 源的集合中生成样式依赖规则?
这些import
语句几乎是所有依赖项。导入语句有两种相关形式:
import x, y, z
from x import a, b, c
您还需要用于构建的PYTHONPATH
和信息。这显示了模块和包的物理位置。sites
sys.path
处理起来有点痛苦,因为您必须对您导入的所有模块中的所有导入进行传递闭包。
作为替代方法,您可以使用该-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