コードを「実行」しているファイルへのパスを見つける最も簡単な方法は何ですか?これは、次のファイルfoo.py
を含むファイルがある場合を意味します。
print(here())
見たいです/some/path/foo.py
(実際には、「実行中」のファイルは複雑ですが、上記は明確に定義されていると思います。実行時に、そのファイルへのパスを提供する関数を含むソースファイルです)。
過去にこれを必要としていたのは、テスト(外部ファイルが必要)を自己完結型にするためでした。現在、プログラムに必要なサポートファイルを見つけるのに役立つかどうか疑問に思っています。しかし、私はこれを行うための良い方法を見つけたことがありません。inspectモジュールは機能するはずですが、そのモジュールで定義されているクラスまたは関数が必要なようです。
特に、モジュールインスタンスには__file__
属性が含まれていますが、「現在の」モジュールを取得する方法がわかりません。オブジェクトには__module__
属性がありますが、それはモジュール名であり、モジュールインスタンスではありません。
例外をスローしてキャッチし、内容を調べるのも一つの方法だと思いますが、それは大変な作業のようです。確かに私が逃したシンプルで簡単な方法はありますか?