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
是一个模块。