1. ホーム
  2. python

モジュールはどこからインポートされているのですか?

2023-10-17 10:55:44

質問

2つのPythonモジュールがあり、path_bがインポートパスにあると仮定します。

# file: path_b/my_module.py
print "I was imported from ???"

#file: path_a/app.py
import my_module

モジュールがどこからインポートされたかを確認することは可能でしょうか?私は、(ファイル名が必要なので)app.pyを起動すると、"I was imported from path_a/app.py" のような出力が欲しいのですが、可能ですか?

編集してください。 より良い理解のために;私は書くことができます。

# file: path_b/my_module.py
def foo(file):
    print "I was imported from %s" % file

#file: path_a/app.py
import my_module
my_module.foo(__file__)

というわけで、出力はこうなります。

$> python path_app.py
I was imported from path_a/app.py

どのように解決するのですか?

もっと簡単な方法があるかもしれませんが、これでうまくいきます。

import inspect

print inspect.getframeinfo(inspect.getouterframes(inspect.currentframe())[1][0])[0]

スクリプトの場所の親ディレクトリである場合、パスは現在の作業ディレクトリからの相対パスで表示されることに注意してください。