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

Azure Functions未安装Python库extras依赖问题求助

Azure Functions 无法识别requirements.txt中的Python库Extras依赖问题

问题详情

我的Azure Function依赖functown库的jwt extras功能,部署后发现Functions环境未安装对应的额外依赖(python-jose),运行时报错:

No module named 'jose'. Please check the requirements.txt file for the missing module.

本地执行pip install -r requirements.txt可正常安装python-jose并成功导入,但Azure Functions部署后失效。当前requirements.txt内容:

functown>=2.0.0
functown[jwt]>=2.0.0

更新说明:该库的extras在项目setup.py中定义,额外依赖通过独立的requirements-jwt.txt管理,本地环境验证完全正常,排除Python版本或requirements.txt配置本身的问题。

解决方案

1. 合并Extras声明到同一行

Azure Functions的pip安装逻辑在处理多行重复包名时,可能优先安装不带extras的基础版本,导致带extras的声明被忽略。将两行合并为一行即可解决:

functown[jwt]>=2.0.0

(注:带extras的声明已包含基础包的安装,无需单独声明functown>=2.0.0)

2. 显式添加额外依赖

如果合并行仍不生效,可直接将extras对应的依赖写入requirements.txt:

functown>=2.0.0
python-jose>=3.3.0  # 替换为functown[jwt]实际依赖的版本号

3. 自定义部署脚本强制安装

通过添加部署后脚本,确保extras被正确安装:

  • Linux环境:在项目根目录创建post_build.sh,内容如下:
pip install functown[jwt]>=2.0.0
  • Windows环境:创建post_build.cmd,内容如下:
pip install functown[jwt]>=2.0.0
  • 在host.json中配置脚本执行:
{
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[3.*, 4.0.0)"
  },
  "postBuild": {
    "scriptPath": "./post_build.sh"  # Windows环境改为./post_build.cmd
  }
}

原因分析

  1. Azure Functions的依赖安装机制对多行重复包名的处理存在优先级问题,不带extras的声明会覆盖带extras的版本;
  2. 部分旧版本的Functions Runtime对PEP 508规范的extras语法支持存在兼容性缺陷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:05:14