我已将模块导入为:
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
如何找到正确的路径?
答案 0 :(得分:3)
您只能引用从模块导入的对象,您自己没有模块对象。
使用inspect.getmodule()
function再次获取模块对象:
import inspect
mod = inspect.getmodule(reviseOnX)
print os.path.abspath(mod.__file__)
请注意,我使用的是os.path.abspath()
,不是 os.path()
。后者会尝试调用该模块。