You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Function对接Service Bus出现ImportError: cannot import name 'c_uamqp'报错求助

问题根因

你猜测的ServiceBusMessage重复导入不成立,该报错本质是uamqp库的C扩展加载失败触发的假循环导入提示,真实原因分为三类:

  1. 依赖版本不兼容:azure-servicebus v7及更早版本强依赖uamqp作为底层AMQP实现,若requirements.txt未锁定兼容版本,自动拉取的不匹配版本会导致初始化失败
  2. 跨平台编译问题:如果你的Azure Function运行在Linux环境,在Windows/macOS本地打包依赖后直接部署的话,uamqp的C扩展c_uamqp是针对本地系统编译的,无法在Linux环境正常加载
  3. 导入时机错误:从报错栈可看到你将azure.servicebus的导入语句写在了main函数内部,Function运行时的动态加载逻辑会加剧模块初始化冲突
解决方案
  • 调整导入位置:将所有import语句统一移到代码文件最顶部,不要放在main函数内部,避免运行时动态导入冲突
  • 替换底层依赖从根源解决问题:直接将azure-servicebus升级到v7.1.0及以上版本,该版本开始默认使用纯Python实现的pyamqp作为底层依赖,完全移除了对uamqp的强制依赖。只需将requirements.txt中对应依赖行修改为:
    azure-servicebus>=7.1.0
    
  • 若必须使用旧版azure-servicebus,可锁定兼容的uamqp版本:在requirements.txt中添加uamqp==1.6.0,该版本和绝大多数旧版azure-servicebus兼容,不会出现导入冲突
  • 解决Linux环境部署问题:如果使用Linux消费级Function计划,不要在本地打包依赖后部署,改为云端构建:Azure CLI部署时添加--build-local false参数,或在VS Code部署设置中开启「在Azure上构建依赖」选项,让云端Linux环境直接编译安装对应架构的依赖包
  • 临时兜底方案:如果以上调整未生效,可在Function的应用配置中添加环境变量PYTHONPATH=/home/site/wwwroot/.python_packages/lib/site-packages,强制运行时优先加载你安装的依赖包,避免和运行时自带的库版本冲突

内容的提问来源于stack exchange,提问作者Nayden Van

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:18:02