私はPEP 302に従ってインポート フックを作成しました。存在しないモジュールをインポートしようとするコードなど、インポート エラーが発生した場合、次のような行でトラックバックが表示されます。
File "<string>", line 10, in helloEnv
10行目は、存在しないインポートへの呼び出しが存在する場所ですが、ファイル名はなく、<string>
. 私のインポートフックは、 PEP 302
の最小のものとほとんど同じです。モジュールの作成では、常に適切な文字列値を に設定し、正しい値が に設定されていることを確認します。また、モジュールのとの両方が有益な情報を返します。__file__
new_module()
__name__
str()
repr()
トラックバック内のこれらの名前のないファイルにより、インポート エラーのデバッグが困難になります。トラックバックはどこからファイル名を取得しますか? モジュールの名前が表示されないのはなぜですか?
編集-もう少し考えてみると、おそらくモジュールコードがを使用して実行されているためexec()
です。exec()
ファイル名を指定することは可能ですか?