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

Python中os.getenv()无法读取dotenv配置的环境变量问题求助

问题根因

你读不到环境变量核心是python-dotenv库的默认加载逻辑和你的配置不匹配,叠加代码里的隐性问题,具体原因如下:

  • load_dotenv()默认只会在当前Python进程的工作目录下查找名为.env的文件,你把配置文件命名为TOKEN.env,默认规则下根本不会被扫描加载,这是最主要的原因。
  • PyCharm的运行配置可能存在工作目录不匹配问题:如果运行时的工作目录不是你存放TOKEN.env的目录,就算你改对文件名,也会找不到配置文件。
  • 你的业务代码存在缺失导入的bug:使用commands.Bot却没有导入discord.ext.commands模块,就算环境变量读取成功也会抛出NameError。
  • 若env文件格式不规范(比如等号两侧加空格、值带多余的引号/中文标点、末尾有不可见特殊字符),也会出现读取值为空/错误的问题。
修复步骤

按优先级依次操作即可解决:

  1. 两种方案选其一解决文件加载问题
    • 方案A(最推荐,符合社区通用习惯):直接把TOKEN.env重命名为.env,放在你Python脚本的同级项目根目录下,无需修改load_dotenv()调用逻辑即可正常加载。
    • 方案B(保留自定义文件名):给load_dotenv()传入env文件的明确路径,补全缺失导入后的完整示例代码:
      import os
      import discord
      from dotenv import load_dotenv
      from discord.ext import commands # 补全缺失的commands模块导入
      
      # 显式指定配置文件路径,建议写绝对路径彻底避免工作目录问题
      load_dotenv(dotenv_path='./TOKEN.env')
      TOKEN = os.getenv('TOKEN')
      # 加校验逻辑可以快速定位配置问题
      if not TOKEN:
          raise RuntimeError("未读取到TOKEN配置,请检查env文件路径和内容格式")
      
      bot = commands.Bot(command_prefix='$')
      bot.run(TOKEN)
      
  2. 校验env文件格式

    配置文件内的令牌行需满足:等号两侧不要加空格,不要使用中文标点,令牌值不要额外包裹单/双引号(除非令牌本身包含引号),行尾不要加多余的注释或不可见空格,正确写法为TOKEN=你的实际机器人令牌字符串。

  3. PyCharm专项检查
    打开右上角运行配置面板,确认Working directory选项指向你存放env文件的项目根目录;也可以在代码中加print(os.getcwd())打印运行时的实际工作目录,和env文件存放路径做比对,不一致就调整运行配置的工作目录即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:54:29