web-dev-qa-db-ja.com

インポートされたモジュールの絶対パスを見つける

インポートされたモジュールの絶対パスを取得するにはどうすればよいですか?

18
Determinant

他の回答が言っているように、あなたは__file__を使うことができます。ただし、他のモジュールがプログラムと同じディレクトリにある場合、これはフルパスを提供しないことに注意してください。したがって、安全のために、次のようなことを行います。

>>> import os
>>> import math
>>> os.path.abspath(math.__file__)
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/math.so'

これは、abspathを取得する必要がある理由を説明するために私が作成したcheckIPというモジュールの例です(checkIP.pyは現在のディレクトリにあります)。

>>> import os
>>> import checkIP
>>> os.path.abspath(checkIP.__file__)
'/Users/Matthew/Programs/checkIP.py'
>>> checkIP.__file__
'checkIP.py'
30
Matthew Adams

それがPYTHONPATHディレクトリツリー内のモジュールである場合(およびそのディレクトリと親ディレクトリに__init__.pyを配置することで到達可能)、そのpath属性を呼び出します。

>>>import sample_module
>>>sample_module.__path__
['/absolute/path/to/sample/module']
4
MrUser

あなたが試すことができます:

import os
print os.__file__

モジュールが配置されている場所を確認します。

3
Taro Sato