PythonコードのMakefile依存関係を行う方法
-
04-07-2019 - |
質問
多数の共有Pythonモジュールを持つpythonプログラムのコレクションによって生成されたCファイルの束があり、makeシステムでこれを考慮する必要があります。
各Cファイルを生成するために実行する必要があるpythonプログラムを列挙するのは簡単です。良い解決策が見つからないのは、それらのプログラムが依存している他のpythonファイルを判別することです。これが必要なので、makeは共有Pythonファイルの1つが変更された場合に再生成が必要なものを認識します。
Pythonソースのコレクションからmakeスタイルの依存関係ルールを作成するための優れたシステムはありますか?
解決
他のヒント
import
ステートメントは、ほとんどすべての依存関係です。 importステートメントには2つの関連するフォームがあります:
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