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

.env环境变量在Python中读取结果不一致问题咨询

问题原因与解决方案

核心原因

这种读取结果不一致的情况,是python-dotenv库的转义字符解析机制导致的:

  • 默认情况下,load_dotenv()会开启转义解析,把.env配置里的特殊字符(比如冒号:)转成对应的URL编码格式\x3a。
  • 刚新增变量时直接读取,可能因为.env文件没被完全重新加载(比如缓存残留),转义规则没生效;重启虚拟环境后,环境变量被彻底重新加载,转义就触发了,所以结果变成转义后的样子。

解决办法

方法1:关闭转义解析

调用load_dotenv()时显式关掉转义功能,让它直接读取原始字符串:

import os
from dotenv import load_dotenv

load_dotenv(escape=False)

endpoint = os.getenv("ENDPOINT", "")
print(endpoint)  # 输出正常的 http://localhost:9000

方法2:修改.env文件写法

去掉配置值的双引号,直接写URL:

ENDPOINT=http://localhost:9000
NEW_ENDPOINT=http://localhost:9001

这样python-dotenv不会触发转义,读取结果就是正常的URL。

方法3:强制重载并关闭转义

如果必须保留双引号,可以强制重载环境变量同时关闭转义:

load_dotenv(override=True, escape=False)

内容的提问来源于stack exchange,提问作者Mr. Kenneth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:05:09