from pack.mod import f
如何从对象获取有关导入的信息-'pack.mod'
我可以用f.__module__
得到它
但是如果在我得到这个属性的模块(f.__module__
)中的函数def返回'__main__'
。但我需要真正的路径-'pack.mod'
我找到了这个方法来获取这些信息:
inspect.getmodule(f).__file__
然后我可以从sys.path
子开始路径,替换.
上的/
,得到类似-'pack.mod'
的路径
但可能存在一些更方便的方式吗?
Tags:
根据inspect.py's sources,内部
inspect.getmodule(f)
所做的基本上是sys.modules.get(object.__module__)
——我不会直接调用使用该代码“更方便”,尽管(除了“基本”部分,inspect
有很多有用的角案例捕捉和更正)。为什么不直接调用inspect.getsourcefile(f)?
编辑:在两行之间读取,操作人员似乎试图执行以下操作
在
bla.py
(因此作为__main__
运行)中,确定“一个不同的主脚本可以使用什么from
或import
语句从我内部导入此函数?”。问题是,问题是不适定的,因为可能没有任何可用的路径(没有任何东西可以保证当前主脚本的路径在
sys.path
以后运行不同的主脚本时位于sys.path
),是的,但在它出现之前还有/fee/fie/foo
,一个完全不相关的文件/fee/fie/foo/bla.py
也存在——等等)。无论这种发现尝试的目的是什么,我建议找到一种替代体系结构——例如,实际执行
from baz.bla import f
的体系结构(正如OP在问题开始时所说的那样),以便f.__module__
被正确设置为baz.bla
。您需要来自
__module__
的__name__
属性:相关问题 更多 >
编程相关推荐