4

コード オブジェクトがどこから来たのかを知る必要があります。そのモジュール。だから私は(素朴に)試しました:

os.path.abspath(code.co_filename)  

しかし、それは機能する場合と機能しない場合があります(abspathがcwdに依存しているためだと思います)

コード オブジェクトのモジュールの フル パスを取得する方法はありますか?

EDIT :
inspect モジュールの関数: getfile、getsourcefile、getmodule は、パスではなくファイル名のみを取得します (co_filename と同じ)。アブパスを使っているのかもしれません。

4

3 に答える 3

3
import inspect
print inspect.getfile(inspect)
于 2011-08-19T14:47:20.780 に答える
1

関数は必要なものです。inspect.getsourcefile()オブジェクトのソースが見つかるファイルへの相対パスを返します。

于 2011-08-19T14:50:39.110 に答える
0

モジュールにアクセスできる場合は、 を試してくださいmodule.__file__

>>> import xml
>>> xml.__file__
'/usr/local/lib/python2.6/dist-packages/PyXML-0.8.4-py2.6-linux-i686.egg/_xmlplus/__init__.pyc'

そうでない場合は、次のようなものが機能するはずです。

>>> import xml.etree.ElementTree as ET
>>> thing = ET.Element('test')
>>> __import__(thing.__module__).__file__
'/usr/local/lib/python2.6/dist-packages/PyXML-0.8.4-py2.6-linux-i686.egg/_xmlplus/__init__.pyc'

この場合、実際のモジュール オブジェクトを返すモジュールの文字列バージョンで import を呼び出すことができるという事実を使用して、それを呼び出し__file__ます。

于 2011-08-19T15:12:38.907 に答える