pycharm运行时load_dotenv()找不到.env文件的根本原因是工作目录(os.getcwd())与.env所在路径不一致,需显式指定路径如load_dotenv(path(__file__).parent.parent / ".env")或在run configuration中启用.env加载。

PyCharm 运行时 load_dotenv() 找不到 .env 文件
根本原因不是文件不存在,而是 PyCharm 默认以「当前工作目录」为起点查找 .env,而这个目录往往不是你放 .env 的地方(比如项目根目录下有 .env,但你在 src/ 里右键 Run,PyCharm 就会把 src/ 当作工作目录)。
验证方法:在代码开头加一行 print(os.getcwd()),看输出路径是否和 .env 所在路径一致。
- 默认行为:
load_dotenv()只查os.getcwd()下的.env,不向上递归、不自动定位项目根目录 - 最稳妥写法是显式传入路径,例如:
load_dotenv(Path(__file__).parent.parent / ".env") - 如果用
find_dotenv(),需先pip install python-dotenv,它会从当前文件位置逐级向上找,直到找到.env或到达磁盘根目录 - 不要用字符串拼接路径如
"../.env"—— 某些系统解析失败,Path对象更可靠
PyCharm 的 Run Configuration 里没启用 .env 文件
PyCharm 支持直接在运行配置中指定 .env 文件,这样就不用在代码里调用 load_dotenv(),也避免了路径判断问题。但它默认不开启,需要手动设置。
PyCharm 2026.2是 JetBrains PyCharm 的指定版本安装包,下载地址指向官方 Windows 安装包直链,可用于旧项目兼容、版本回退和环境测试。
- 打开
Run → Edit Configurations…,选中你的 Python 脚本配置 - 展开
Environment区域,勾选Load environment variables from .env file - 点击右侧
…按钮,在弹出对话框中添加.env文件路径(支持多个,用分号分隔) - 注意:这个功能只影响当前运行配置,新建脚本需重新配置;且它不会修改
os.environ的加载顺序,只是提前注入
PyCharm 终端或调试器没重载环境变量
即使你改了 .env 内容或调整了加载逻辑,PyCharm 的终端和 Debug 会话也不会自动感知变更——它们启动时就固化了环境快照。
- 修改
.env后,必须重启 PyCharm 的 Python Console、Terminal 或 Debug 进程 - 在 Terminal 中执行
python -c "import os; print(os.getenv('DEBUG'))"测试是否生效,如果还是None,说明没重载 - PyCharm 的 Python Console 默认不读
.env,除非你在 Console 设置里勾选了「Use login shell」或手动执行load_dotenv() - IDE 插件(如 EnvFile)能增强支持,但非必需;装了也得重启 IDE 才生效
Python 解释器或虚拟环境没装 python-dotenv
PyCharm 用的是自己配的 Python 解释器(可能是系统 Python,也可能是项目虚拟环境),如果这个解释器里没装 python-dotenv,from dotenv import load_dotenv 会直接报 ModuleNotFoundError,但很多人忽略了这个错误,只盯着 os.getenv() 返回 None 看。
- 检查方式:在 PyCharm Terminal 里运行
python -c "import dotenv",报错就说明没装 - 安装命令:
pip install python-dotenv,务必确认当前激活的是 PyCharm 配置的那个解释器(看 Terminal 提示符或which python) - 如果用了 Poetry/Pipenv,得在对应环境中运行
poetry add python-dotenv或pipenv install python-dotenv - 别在系统 Python 里装完,却让 PyCharm 用虚拟环境跑——两边隔离,互不影响










