Azure Functions v2中Python跨文件导入函数报错及可行性咨询
在Azure Functions v2中导入其他文件函数的解决方案
Azure Functions完全支持从项目内的其他文件/包导入函数,你遇到的导入错误是因为运行环境的模块路径规则导致的,以下针对你尝试的两种结构给出修正方案:
第一种结构:test.py与function_app.py同级
问题原因
使用from . import say_hi属于相对导入语法,但Azure Functions运行时会将function_app.py作为顶级主模块(__name__ == '__main__')执行,相对导入在顶级模块中会触发no known parent package错误。
修正方案
改用绝对导入,直接从模块名导入:
# function_app.py中 from test import say_hi # 调用函数 say_hi()
第二种结构:test目录(含__init__.py)
方案1:直接导入子模块函数
# function_app.py中 from test.test import say_hi say_hi()
方案2:通过包的__init__.py简化导入
在test/__init__.py中添加导出语句:
# test/__init__.py from .test import say_hi
之后在function_app.py中直接从包导入:
from test import say_hi say_hi()
注意点
不要使用from .test import say_hi这类相对导入,因为function_app.py处于项目根目录(顶级模块),不存在父包上下文,相对导入语法不适用。
核心逻辑
Azure Functions运行时会自动将项目根目录添加到Python的sys.path中,因此所有根目录下的模块、包都可以通过绝对导入直接引用,只要遵循Python的模块导入规则即可。
内容的提问来源于stack exchange,提问作者hudsonsc
相关产品推荐
相关产品推荐

