インポートされたモジュールの絶対パスを取得するにはどうすればよいですか?
他の回答が言っているように、あなたは__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'
それがPYTHONPATHディレクトリツリー内のモジュールである場合(およびそのディレクトリと親ディレクトリに__init__.py
を配置することで到達可能)、そのpath属性を呼び出します。
>>>import sample_module
>>>sample_module.__path__
['/absolute/path/to/sample/module']
あなたが試すことができます:
import os
print os.__file__
モジュールが配置されている場所を確認します。