Avatar ·

Python中的相对导入

📁 python, 问题, 帮助

有一段时间(由于相对导入被取消),我无法正常解决以下问题:

假设程序结构如下

  app/ __init__.py foo/ __init__.py handler.py  

如何从模块 handler.py 中加载包 foo 中的某些内容?

关键在于包名 foo 是未知的,我是通过 importlib 加载它的。

目前我找到了这样一个权宜之计:我截取变量 __name__ ,它在 handler.py 中等于 'foo.Handler' ,即像这样

  foo_name = __name__.rsplit( '.' ,  1 )[ 0 ]  

然后我加载我需要的模块

  needle_module = importlib.import_module(foo_name + '.some_module')