Вопрос

У меня есть куча файлов C, сгенерированных набором программ на python, имеющих несколько общих модулей python, и мне нужно учитывать это в моей системе make.

Достаточно просто перечислить, какую программу Python необходимо запустить для генерации каждого C-файла. Что я не могу найти хорошее решение для определения других файлов Python, от которых зависят эти программы. Мне это нужно, так что make будет знать, что нужно восстановить, если один из общих файлов Python изменяется.

Есть ли хорошая система для создания правил зависимости make style из коллекции исходников 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top