Azure Functions导入同目录自定义模块出现ModuleNotFoundError错误
Azure Functions Python项目自定义模块导入及启动报错解决方案
问题说明
你当前遇到两类报错,其中/dev/shm权限报错为macOS平台运行Azure Functions Core Tools的已知兼容性问题,不影响函数核心逻辑;ModuleNotFoundError: No module named 'mymodule'为模块导入路径配置错误导致,是启动失败的核心原因。
解决方案
1. 修复自定义模块导入错误
Azure Functions Python worker的默认工作目录为项目根目录(即存放host.json、requirements.txt的目录),而非单个触发器的子目录,你将mymodule.py放在触发器子目录和__init__.py同级时,直接写import mymodule无法被检索到,可根据使用场景二选一:
- 场景一:mymodule仅为当前触发器使用,保留文件放在触发器子目录(和__init__.py同级),将导入语句修改为相对导入:
from . import mymodule - 场景二:mymodule需要被多个触发器共用,将mymodule.py移动到项目根目录,原
import mymodule语句无需修改即可正常识别。
2. 消除/dev/shm权限报错
如果需要清除该警告,可在启动命令前添加环境变量关闭共享内存传输特性,启动命令修改为:
. .venv/bin/activate && export AZURE_FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED=false && func host start
验证步骤
- 确认导入语句和文件存放位置匹配
- 执行修改后的启动命令,即可正常加载模块运行函数
内容的提问来源于stack exchange,提问作者gh0st
相关产品推荐
相关产品推荐

