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

python-dotenv无法完整读取环境变量问题求助

解决python-dotenv读取环境变量截断的问题

问题根源

你的.env文件用双引号包裹了DB_HOST的值,同时值里包含&符号,python-dotenv解析时会把&当作命令分隔符,导致值被截断到retryWrites;另外首次重装后环境变量无残留,能正常读取,后续因为环境变量已经被设置为截断后的值,而默认load_dotenv()不会覆盖已存在的环境变量,所以重复出现截断问题。

解决方案

1. 修正.env文件格式

去掉DB_HOST值的双引号,或者改用单引号包裹,确保&被当作值的一部分:

  • 方案一(推荐):去掉引号
DB_HOST=mongodb+srv://xxx:xxx@playground.xxx.mongodb.net/?retryWrites=true&w=majority
  • 方案二:用单引号包裹值
DB_HOST='mongodb+srv://xxx:xxx@playground.xxx.mongodb.net/?retryWrites=true&w=majority'

2. 强制覆盖已存在的环境变量

修改test.py中的load_dotenv()调用,添加override=True参数,确保每次运行都从.env文件重新加载并覆盖已有的环境变量:

import os
from dotenv import load_dotenv

# 强制覆盖已存在的环境变量
load_dotenv(override=True)

print(os.environ.get('DB_HOST'))

3. 清理终端环境变量缓存

如果在同一个终端窗口多次运行,之前的截断值可能已经存入环境变量,可手动清除:

  • Linux/macOS终端:
unset DB_HOST
  • Windows命令提示符:
set DB_HOST=

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:32:51