从.env文件读取变量时,内容在=符号处被截断的问题
解决.env变量读取截断问题
可能原因及对应解决方案
1. .env文件变量值未用引号包裹
如果你的MONGODB_URI值本身包含=或其他特殊字符(如&、空格),直接写入会导致dotenv解析错误。比如原写法:
MONGODB_URI=mongodb://user:pass@host:port/db?param=value
修改为用双引号包裹值:
MONGODB_URI="mongodb://user:pass@host:port/db?param=value"
2. 强制加载.env并覆盖环境变量
系统环境变量可能覆盖了.env中的值,或者dotenv未正确加载,试试添加override=True参数:
import os from dotenv import load_dotenv load_dotenv(override=True) print(os.getenv("MONGODB_URI"))
3. 指定.env文件绝对路径加载
WSL2环境下若当前工作目录与.env所在目录不符,会导致加载失败,直接指定绝对路径:
import os from dotenv import load_dotenv # 替换为你的.env文件实际绝对路径 env_path = "/home/your_username/your_project/.env" load_dotenv(dotenv_path=env_path, override=True) print(os.getenv("MONGODB_URI"))
4. 转换.env文件换行符格式
如果.env是在Windows环境下生成的,可能带有CRLF换行符,导致WSL2中解析异常,用dos2unix转换:
dos2unix .env
内容的提问来源于stack exchange,提问作者JSFernando
相关产品推荐
相关产品推荐

