Azure Function运行时与pytest导入问题:ModuleNotFoundError
问题与解决方案
原始问题
项目结构
repo/ |--model/api |--function/function_app.py |--function/tool.py |--function/__init__.py |--tests/test_function_app.py |--tests/__init__.py
导入矛盾问题
- 在
repo/目录下执行func start运行function_app.py时,必须使用from tool import someFunction导入tool.py才能正常运行;但运行pytest时会抛出错误:ModuleNotFoundError: No module named 'tool'。 - 若将导入语句改为
from function.tool import someFunction,pytest可正常执行,但用func start运行函数时又会返回错误:ModuleNotFoundError: No module named 'function'。 - 曾尝试将测试文件放在函数所在目录且不添加
__init__.py,虽然两者都能正常运行,但部署时需要手动删除测试文件,希望找到更优的解决方案。
解决方案
调整后的项目结构
repo/ |--model/api |--function/ |--function_app.py |--tools/ |--tool.py |--__init__.py |--tests/ |--test_function_app.py |--__init__.py
正确导入方式
- 测试文件中使用:
from function_app import function_function - function_app.py中使用:
from tools import tool,通过tool.function调用具体工具函数
内容的提问来源于stack exchange,提问作者admeer
相关产品推荐
相关产品推荐

