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)

但是,正如