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

Django项目运行Docker镜像报object of type 'map' has no len()错误

问题根因
  • 核心报错来源于依赖的python-openid库版本过旧,不兼容Python3:Python2中map()方法返回列表类型,支持len()操作,但Python3中map()返回的是迭代器对象,不支持直接调用len(),旧版python-openid的初始化代码未做Python3适配,直接对map生成的version_info变量调用len()就触发了该报错。
  • Dockerfile存在拼写错误:依赖安装步骤写的requairements.txt正确命名应为requirements.txt,如果本地依赖文件命名正确,这一步会执行失败,导致项目依赖没有正常安装,使用了容器默认的不兼容依赖版本。
  • 基础镜像未固定版本:FROM python:3会拉取当前最新的Python3镜像,和你本地开发环境的版本可能存在差异,这也是你更换Python版本依然报错的核心原因——依赖版本没有同步修正,只换Python版本没用。
可行解决方案
  1. 修正Dockerfile中的拼写错误,将依赖安装行改为:
RUN pip install -r requirements.txt
  1. 修改你的项目requirements.txt文件:
    • 移除旧的python-openid依赖声明,替换为兼容Python3的社区维护版本:python3-openid>=3.2.0
    • 如果你用的social-auth-core是间接依赖了旧版openid,直接指定social-auth-core>=4.3.0即可,该版本已经默认使用python3-openid替代旧版不兼容库。
  2. 固定Python基础镜像版本,和你本地开发用的Python版本保持一致,比如本地用3.10就改为:
FROM python:3.10
  1. 重新构建Docker镜像后启动,报错即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:36:02