Azure Python函数CI/CD部署报错:ModuleNotFoundError缺失azure.servicebus模块
解决Azure Python函数CI/CD部署后
ModuleNotFoundError: No module named 'azure.servicebus'问题 针对你遇到的CI/CD部署后依赖找不到、本地部署正常的问题,可从以下几个方向排查解决:
1. 检查构建脚本的依赖安装路径
Azure Functions要求Python依赖必须安装在函数代码根目录的.python_packages/lib/site-packages目录下,这样部署包才会包含这些依赖。如果你的构建脚本只是直接运行pip install -r requirements.txt,依赖会被安装到代理的系统Python路径,不会被打包进部署包。
修改构建脚本中的pip命令,指定安装目标路径:
pip install --target .python_packages/lib/site-packages -r requirements.txt
2. 确保构建与运行环境的Python版本一致
虽然你提到工作环境和函数应用都是Python3.7,但ubuntu-latest代理默认可能有多个Python版本,若构建时用了其他版本(比如3.8+),安装的依赖包可能和函数应用的3.7不兼容,导致无法识别。
在构建脚本中明确指定Python3.7执行pip:
python3.7 -m pip install --target .python_packages/lib/site-packages -r requirements.txt
如果代理没有预装Python3.7,可先通过apt安装:
sudo apt-get update && sudo apt-get install python3.7 python3.7-pip
3. 确认部署包包含依赖目录
CI/CD打包时如果漏掉了.python_packages目录,部署到Azure的包就只有函数代码,没有依赖文件。检查打包步骤,确保将该目录包含进去。例如用zip打包时:
zip -r function_app.zip .python_packages/ 函数代码文件/ requirements.txt
4. 检查Azure函数应用的配置设置
- 确认函数应用配置中的Python版本设置为3.7;
- 如果开启了
WEBSITE_RUN_FROM_PACKAGE,确保打包的zip文件完整包含所有依赖; - 可临时关闭
WEBSITE_RUN_FROM_PACKAGE,改用Zip部署方式测试,看是否能正常加载依赖。
5. 清理CI/CD代理的依赖缓存
代理可能缓存了旧版本的依赖包,导致安装的azure.servicebus不匹配当前环境。在构建脚本中加入清理缓存的命令:
pip cache purge pip install --no-cache-dir --target .python_packages/lib/site-packages -r requirements.txt
内容的提问来源于stack exchange,提问作者Deshitha Hansajith
相关产品推荐
相关产品推荐

