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

Azure Functions(Linux Python3.9)部署后rlp缺失Serializable属性报错

问题成因

部署环境中rlp模块属性缺失的核心原因有两类,90%以上场景为第一种:

  • 模块命名冲突:项目目录下存在名为rlp.py的文件、或名为rlp的代码文件夹,Python导入模块时优先加载工作目录下的本地代码,覆盖了pip安装的官方rlp第三方包。从部署后打印的dir(rlp)结果中存在rlp属性可以直接判断——官方2.0.1版本的rlp顶层模块不存在该属性,这是本地同名嵌套模块的典型特征。本地Windows环境运行正常通常是因为本地启动时工作目录优先级不同,未加载到本地同名冲突文件,部署后Azure Functions默认将项目根目录放在模块搜索路径最高优先级,直接触发冲突。
  • 依赖安装异常:Linux版Azure Functions默认开启部署缓存,若未开启服务端构建配置,可能出现依赖未按requirements.txt指定版本安装、Windows平台预编译依赖在Linux环境不兼容、旧版本错误依赖残留的问题,导致加载的rlp不是目标2.0.1版本。
解决方案

按以下顺序排查修复即可:

  1. 排查命名冲突
    检查本地Functions项目的所有目录,删除/重命名所有名为rlp.py的文件、名为rlp的自定义代码文件夹,绝对避免自定义代码和第三方依赖包重名。
  2. 开启服务端依赖构建配置
    在Azure函数应用的「配置-应用程序设置」中添加键值:
    SCM_DO_BUILD_DURING_DEPLOYMENT = true
    配置后部署时服务端会自动基于Linux Python 3.9环境安装requirements.txt中指定的依赖,避免本地Windows环境打包的依赖不兼容问题。
  3. 清理旧依赖缓存
    进入函数应用绑定的存储账户,删除以下路径的所有缓存文件:
    • data/SitePackages 目录下所有内容
    • /home/site/wwwroot/.python_packages 目录下所有内容
      清理完成后重新执行部署,不要本地提前安装依赖后上传,直接上传源码和requirements.txt即可。
  4. 部署后验证
    部署完成后可临时添加调试代码确认rlp加载正确:
    import rlp
    # 打印rlp实际加载路径,正确路径应包含site-packages/rlp
    print(rlp.__file__)
    # 确认Serializable属性存在
    print(hasattr(rlp, 'Serializable'))
    
    若打印的路径指向/home/site/wwwroot/下的自定义rlp文件/文件夹,回到第一步重新排查命名冲突即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:42:26