モジュールを調べていないようですが、type
オブジェクトです。あなたは試してみてください:
os.path.dirname(MODULE.__module__.__file__)
警告
通常、モジュールが配置されている場所を見つけるために__file__
属性を使用することができますが、docsに述べたように(あなたがビットまたはCtrlキーを下にスクロールする必要があります+ fと__file__
を検索)、この属性は存在しません。
The __file__
attribute is not present for C modules that are statically linked into the interpreter; for extension modules loaded dynamically from a shared library, it is the pathname of the shared library file.
ただし、imp
モジュールを使用できます。実際にモジュールをインポートするときに実行される同じ検索を実行する関数find_moduleがあります。これは、このようなコードにつながる:
import imp
data = imp.find_module("MODULE")
# The path of the module is the second element of the tuple
pathname = data[1]
(MODULE._ file__)ではなく、(MODULE._ _file __)ではありません - エラーのためにアンダースコアの間にスペースを入れなければなりませんでした。 – user7073454
私は '__file__'のスペースを削除するための編集を提出しました。 - コードを正しくフォーマットすると(インラインコードのバッククイック、コードブロックの4つのスペースインデント)、アンダースコアは正しく表示され、イタリック体/太字は発生しません。 – whrrgarbl