Azure Linux Web App部署Django遇ImportError问题求助
解决Azure Linux Web App中Django部署的
ImportError: cannot import name 'Sequence' from 'collections'问题 问题背景
将Django应用部署为Azure Linux Web App后,原本正常运行数月,但近期通过AzDO CI/CD流水线部署后,启动时触发如下错误:
ImportError: cannot import name 'Sequence' from 'collections'
错误源于Azure容器中微软提供的pathlib.py第10行代码from collections import Sequence,而官方Python 3.12版本的pathlib.py中对应的代码是from _collections_abc import Sequence。
尝试手动修改容器内的pathlib.py文件可临时解决问题,但每次部署或容器重启后,文件都会被微软发行版覆盖,无法持久生效。本地使用官方Python环境可正常运行,此前在Azure上也能正常工作,问题属于微软镜像的回归错误。
官方问题确认
通过微软支持工单得到的回复确认:
- 这是影响多位用户的已知问题,根源是Azure App Service当前Python官方镜像对collections库的支持存在缺陷
- Azure App Service目前最高支持Python 3.12,且不允许选择特定小版本,仅提供3.12、3.11、3.10、3.9等大版本选项,运行时镜像从Microsoft Container Registry拉取
- 微软正在积极测试并集成最新Python版本,但暂无面向全球用户的更新时间表
临时解决方案
目前唯一可行的临时解决方法是将应用部署为自定义Docker容器(WebApp for Containers):
- 编写自己的Dockerfile,指定官方Python镜像版本和环境配置
- 搭配
requirements.txt管理依赖,完全控制应用运行的Python环境,避免微软预构建镜像的问题
内容的提问来源于stack exchange,提问作者Nathan Scott
相关产品推荐
相关产品推荐

