Python:如何在导入的模块中获取文件的绝对路径

时间:2014-09-24 11:12:37

标签: python

我已将模块导入为:

from source.x.ReviseOnOrder import reviseOnX, x

方法reviseOnX运行另一个python脚本,比如y.py,它位于同一位置,即/source/x。因此,在执行reviseOnX时,我想知道完整路径,以便我可以将正确的路径传递给调用y.py的子进程。

基于其他SO问题,我尝试了以下内容:

print os.path(source.x.ReviseOnOrder.__file__)

但它会出现以下错误:

NameError: global name 'source' is not defined

如何找到正确的路径?

1 个答案:

答案 0 :(得分:3)

您只能引用从模块导入的对象,您自己没有模块对象。

使用inspect.getmodule() function再次获取模块对象:

import inspect

mod = inspect.getmodule(reviseOnX)
print os.path.abspath(mod.__file__)

请注意,我使用的是os.path.abspath()不是 os.path()。后者会尝试调用该模块。