Azure Functions Python本地运行遇ModuleNotFound异常(含ORM类库)
在Windows本地运行Azure Functions时,已通过虚拟环境安装的依赖包(如ratelimit、Pony ORM)被提示ModuleNotFoundError,但Mac本地及Azure云端运行正常。核心错误为Customer packages not in sys path,Functions Worker未加载虚拟环境的依赖路径。
Windows环境下,Azure Functions Core Tools在执行func host start时,可能未正确继承虚拟环境的环境变量,导致Worker进程调用系统全局Python(而非虚拟环境内的Python解释器),系统Python中未安装项目依赖,因此出现模块找不到的错误。而Mac的Shell环境对虚拟环境变量传递的兼容性更好,Azure云端则是直接部署依赖包至运行环境,不存在路径识别问题。
无需更换Azure Functions,可通过以下方法修复Windows本地运行问题:
强制指定虚拟环境的Python解释器
启动Functions时,直接指定虚拟环境内的Python路径,确保Worker使用正确的解释器:func start --python ".venv\Scripts\python.exe"分步执行虚拟环境激活与启动命令
避免用分号连接激活和启动命令,改为分步执行,确保环境变量正确传递:.venv\Scripts\activate func host start设置PYTHONPATH环境变量
手动将虚拟环境的依赖目录加入Python路径:set PYTHONPATH=C:\{你的项目路径}\.venv\lib\site-packages func host start升级Azure Functions Core Tools
旧版本Core Tools存在Windows虚拟环境路径识别bug,升级至最新版本可解决部分兼容性问题:npm install -g azure-functions-core-tools@4 --unsafe-perm true确认依赖安装路径
确保使用虚拟环境内的pip安装依赖,避免误装到系统Python:.venv\Scripts\pip install -r requirements.txt
内容的提问来源于stack exchange,提问作者Nathan Verghis

