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

Python:如何获取导入模块中文件的绝对路径,python,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

我已将模块导入为:

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

如何找到正确的路径?

您只有对从模块导入的对象的引用,而没有模块对象本身

使用以再次获取模块对象:

import inspect

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

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

您只有对从模块导入的对象的引用,而没有模块对象本身

使用以再次获取模块对象:

import inspect

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

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

您需要
导入源代码
@PeterWood:
类型错误:“模块”对象不可调用
@nish:您的意思是
os.path()
调用?这是无效的,因为
os.path
是一个模块。您需要
导入源代码
@PeterWood:
TypeError:“module”对象不可调用
@nish:您的意思是
os.path()
调用?这是无效的,因为
os.path
是一个模块。我得到:
TypeError:'module'对象不可调用
@nish:在我的回答中调用的模块在哪里?哪一行为您抛出该异常?打印os.path(mod.\uuuuu文件)。这一行抛出的错误是正确的,但这是因为
os.path
是一个模块。我得到:
TypeError:“模块”对象不可调用
@nish:在我的答案中调用的模块在哪里?哪一行为您抛出该异常?打印os.path(mod.\uuuuu文件)。这一行正确抛出了错误,但这是因为
os.path
是一个模块。