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

Django无法从.env文件导入DATABASE_PASSWD值的问题

问题排查与解决方案

你的问题是.env文件中DATABASE_PASSWD变量无法通过decouple.config()读取,但其他变量正常,硬编码密码可正常运行。以下是针对性的排查和解决步骤:

1. 确认.env文件的位置与命名

  • 确保.env文件与manage.py处于同一项目根目录,不要放置在子应用或其他目录下,python-decouple默认从项目根目录加载该文件。
  • 文件名必须是.env,不能是env、.env.dev这类变体(除非你显式指定加载路径)。

2. 检查DATABASE_PASSWD的行格式

  • 确保变量定义无多余空格:正确格式为DATABASE_PASSWD=Password1,不要写成DATABASE_PASSWD = Password1(等号两侧空格会导致解析失败)。
  • 不要给密码加引号(单/双引号),比如DATABASE_PASSWD="Password1"可能会被解析成包含引号的字符串,甚至直接读取失败。

3. 显式指定.env文件路径

如果默认加载路径有问题,可以手动指定文件路径强制加载:

# settings.py
from decouple import Config, RepositoryEnv
# 替换为你的.env文件绝对路径
config = Config(RepositoryEnv('/your/project/root/.env'))

DB_PASSWORD = config('DATABASE_PASSWD')
SECRET_KEY = config('SECRET_KEY')

4. 排查系统环境变量冲突

系统环境变量优先级高于.env文件中的变量,可能存在同名的DATABASE_PASSWD变量但未设置值。可以先在settings.py中打印验证:

import os
# 打印该环境变量的实际值
print(os.environ.get('DATABASE_PASSWD'))

如果输出None,说明.env文件未被正确加载;如果输出非预期值,说明系统环境变量覆盖了.env中的配置,需要删除或修改系统变量。

5. 清理运行环境缓存

  • 重启你的IDE(如PyCharm、VS Code),避免环境变量缓存导致的读取异常。
  • 如果用终端运行Django,重启终端后再执行python manage.py runserver,确保环境变量重新加载。

6. 检查是否存在多.env文件冲突

如果项目中存在多个环境配置文件(如.env、.env.production),可能python-decouple加载了错误的文件。可以通过环境变量指定加载目标文件:

# Linux/macOS终端
export ENV_PATH=/your/project/root/.env
# Windows cmd
set ENV_PATH=C:\your\project\root\.env

之后再启动Django服务。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:40:45