查找导入模块的绝对路径

Posted

技术标签:

【中文标题】查找导入模块的绝对路径【英文标题】:Find the absolute path of an imported module 【发布时间】:2012-08-27 08:42:51 【问题描述】:

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

【问题讨论】:

你是指文件的文件系统路径,还是Python模块路径? 如果有人想用函数 function_name.__code__ 来做这件事,可以很好地获取完整的文件路径。 【参考方案1】:

正如其他答案所说,您可以使用__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'

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

你可以试试:

import os
print os.__file__

查看模块所在的位置。

【讨论】:

以上是关于查找导入模块的绝对路径的主要内容,如果未能解决你的问题,请参考以下文章

模块的绝对导入相对导入

016-1 模块-模块的加载顺序导入执行流程

使用 ES6 语法和绝对路径导入外部模块

为特定模块编写测试时如何使用绝对导入路径

导入 JavaScript 时如何在 QML 中使用绝对路径?

python3绝对路径,相对路径