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

使用Docker-Compose启动Django项目时出现dotenv模块属性错误

解决Docker启动时dotenv无dotenv_values属性的问题

排查依赖版本冲突

  • dotenv_values是python-dotenv 0.10.0及以上版本才新增的方法,容器内大概率安装了低于该版本的旧版,和本地环境版本不一致。
  • 本地执行pip show python-dotenv查看有效版本,然后在依赖文件中明确指定版本:
    • requirements.txt添加:python-dotenv>=0.19.0
    • Poetry的pyproject.toml中配置:python-dotenv = "^0.19.0"

清理重名的dotenv包

  • 存在一个旧第三方包也叫dotenv,和python-dotenv重名,会导致容器内导入错误模块。
  • 检查依赖文件,删除单独的dotenv包条目,只保留python-dotenv。
  • 可在Dockerfile中强制清理并重新安装:
    RUN pip uninstall -y dotenv && pip install python-dotenv>=0.19.0
    

改用Django-environ原生API读取配置

  • 无需手动导入dotenv模块,django-environ本身依赖python-dotenv,用原生写法避免模块调用冲突:
    import environ
    
    env = environ.Env()
    # 读取.env文件,可指定路径,默认读取当前目录下的.env
    env.read_env(env.str('ENV_PATH', '.env'))
    

验证Docker依赖安装流程

  • 确保Dockerfile中依赖安装步骤正确加载最新依赖文件:
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    
    确认requirements.txt包含正确的python-dotenv版本,无冲突包。

检查.env文件容器内路径

  • 虽然错误由模块属性引发,但仍需确认容器内.env文件路径与代码指定一致:
    • 在docker-compose.yml中挂载本地.env到容器对应路径:
      services:
        web:
          volumes:
            - ./.env:/app/.env
      
    • 或在Dockerfile中COPY.env文件到容器内目标位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:05:30