3

高価な操作を含むやや長い Python スクリプト (手動で監査するには長すぎる) があり、その後に高価な操作の出力に依存する多数のライブラリ関数呼び出しが続くとします。

ライブラリ関数呼び出しに必要なすべてのモジュールをインポートしていない場合、Python は行ごとに解釈するため、高価な操作が終了した後にのみエラーが発生します。

a) 手動で行ごとに検証するか、b) ライブラリを見逃すたびに高価な操作を実行せずに、必要なすべてのインポートがあることを自動的に検証する方法はありますか?

その質問を別の方法で言えば、実行前の依存関係の検証に関して C コンパイラが行うことを行うツールがあるかどうかです。

4

2 に答える 2

2

snakefoodというモジュールがあります:

Python コードから依存関係グラフを生成する

AST を使用して Python ファイルを解析します。

これは非常に信頼性が高く、常に実行されます。モジュールがロードされていません。多くのコードベースがグローバル名前空間で初期化コードを実行するため、依存関係を把握するためにモジュールをロードすることはほとんど常に問題であり、追加のセットアップが必要になることがよくあります。Snakefood では、この問題が発生しないことが保証されています (何があっても実行されるだけです)。

を呼び出すと、インポートのリストを取得できますsfood-imports <script.py>。次に、リスト内の各モジュールを 1 つずつインポートして、それがスローするかどうかを確認できますImportError

または、pylintを使用してください。ドキュメントからの引用:

エラー検出

宣言されたインターフェイスが本当に実装されているかどうかを確認する

モジュールがインポートされているかどうかを確認する

それが役立つことを願っています。

于 2013-07-23T18:47:13.393 に答える