22

如何获取导入模块的绝对路径?

4

3 回答 3

38

正如其他答案所说,您可以使用__file__. 但是,请注意,如果其他模块与程序位于同一目录中,这不会给出完整路径。所以为了安全起见,请执行以下操作:

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

这是我调用的一个模块的示例,checkIP以说明为什么需要获取 abspath (checkIP.py在当前目录中):

>>> import os
>>> import checkIP
>>> os.path.abspath(checkIP.__file__)
'/Users/Matthew/Programs/checkIP.py'
>>> checkIP.__file__
'checkIP.py'
于 2012-09-02T06:23:55.213 回答
8

如果它是 PYTHONPATH 目录树中的一个模块(并且可以通过__init__.py在其目录和父目录中放置 a 来访问),则调用其路径属性。

>>>import sample_module
>>>sample_module.__path__
['/absolute/path/to/sample/module']
于 2016-03-07T19:24:19.983 回答
3

你可以试试:

import os
print os.__file__

查看模块的位置。

于 2012-09-02T06:20:55.300 回答