7
これは、関数内から呼び出しモジュールへのアクセスの問題へのこれまでの私の最高のソリューションです:現在実行中の関数が呼び出されたモジュールを取得するには?
import inspect
import sys
def calling_module(level=0):
filename = inspect.stack()[level+2][1]
modulename = inspect.getmodulename(filename)
try:
return sys.modules[modulename]
except KeyError:
return sys.modules['__main__']
...しかしKeyError
の取り扱いにおける暗黙のは、(大部分は根拠のない)であることができることを仮定filename
が__main__
として実行されている場合にのみ発生します。
Python標準ライブラリはこれを行うためのより堅牢な方法を提供しますか?