2012-01-25 18 views

答えて

2

あなたはPythonの標準ライブラリからinspectモジュールを使用することができます

import inspect 


inspect.getfile(some_func) 
+0

非常に良い!これを知らなかった。しかし、単に 'sys.modules'を参照するよりも多くの関数(' struct.pack'など)で失敗するようです。 –

+0

@MattiVirkkunen、 'sys.modules [struct.pack .__モジュール__] .__ファイル__'育成' AttributeError: 'モジュール'オブジェクトには私のために属性 '__file____'がありません。 (モジュール)_struct '(組み込み)> – reclosedev

+0

私はそれがバージョンまたはプラットフォームの違いでなければならないと思います。幸運なことに、あなたは、ビルトインがどんなところから来ているか知る必要はありません。 –

2

これはほとんどの機能で有効です。それはビルトインでは機能しませんが、あなたはそれらをとにかくインポートしていません。

import sys 
sys.modules[somefunc.__module__].__file__ 
+0

これはメンバ関数で動作するかどうかわからない:たとえば、 ' '' .strip .__ module__'ため' NONE'です。 – NPE

+0

@aix:これは組み込みのためです。 –

関連する問題