修改 .env 时,VSCode 不会更新环境变量

VSCode does not update environment variables upon .env modification

提问人:Bharel 提问时间:10/22/2023 最后编辑:Bharel 更新时间:10/22/2023 访问量:49

问:

我在 Python 项目中使用 .env,带有 python-dotenv,但似乎 VSCode 会自动从 .env 加载环境变量。

不幸的是,当我修改 .env 文件时,VSCode 似乎没有更新环境变量,导致 Python 程序在旧环境变量上运行。

重新启动 VSCode /打开新的集成终端似乎无济于事。看起来好像它在某个地方缓存了 .env,然后从缓存中重新加载它,而不会在更新原始文件时删除缓存。

/usr/bin/env 和 .env 文件的输出:

enter image description here

帮助输出: 关于:

Version: 1.84.0-insider (Universal)
Commit: f1c3b1dcf85e3b6ddb24b7dce0e4b122e8ce6233
Date: 2023-10-17T05:38:23.658Z
Electron: 25.8.4
ElectronBuildId: 24154031
Chromium: 114.0.5735.289
Node.js: 18.15.0
V8: 11.4.183.29-electron.0
OS: Darwin x64 22.6.0

Python扩展版本。v2023.19.12931008

visual-studio-code 环境变量 .env vscode-python python-dotenv

评论

0赞 starball 10/22/2023
请将命令的输出(在命令面板中运行)复制并粘贴到您的问题帖子中。此外,添加 Python 扩展的版本号。然后添加可用于重现问题的确切过程。Help: About
0赞 starball 10/22/2023
还请检查 google.com/ 的第一页或第二页中是否有任何内容与您的问题相匹配。
0赞 Bharel 10/22/2023
@starball我已经检查过了,谢谢。不幸的是,所有问题都已解决,我正在运行最新版本。我以前见过它们,但这有点令人难以置信。当我重新启动 vscode、使用开发人员重新加载窗口并打开一个新的集成终端时,似乎正在重新读取 env 文件。如果我错过了任何步骤,它不会重新加载。添加一个重现它的确切过程是相当困难的。它只是一个未加载到环境中的 dotenv(仅在重新启动等之后)
0赞 starball 10/23/2023
我建议在菜单栏中提出错误票。如果您这样做,请在此处与我联系,并提供您的问题票证的链接,并在您的问题票证中提供尽可能多的详细信息。Help > Report Issue

答:

0赞 Sean K. 10/22/2023 #1

我不确定您的 Python 代码是如何获取环境变量的,但这就是我通常的做法。

.env 域名

BROADCAST_MAC=ff:ff:ff:ff:ff:ff
DEFAULT_MAC=11:22:33:44:55:66

config.py

from dotenv import load_dotenv
from pathlib import Path
import os

# path to your .env file
env_path = Path(".") / ".env"
load_dotenv(dotenv_path=env_path)

class Config: # Save your var in a class
    BROADCAST_MAC = os.getenv("BROADCAST_MAC")
    DEFAULT_MAC = os.getenv("DEFAULT_MAC")

main.py

import config

BROADCAST_MAC = config.Config.BROADCAST_MAC
DEFAULT_MAC = config.Config.DEFAULT_MAC

我个人喜欢单独的配置文件(更容易调试)。 让我知道这是否有帮助,如果没有,这可能会有所帮助

评论

0赞 Bharel 10/22/2023
感谢您尝试提供帮助。不幸的是,即使在 python 运行之前,环境也加载了 vscode。它与Python代码无关:-)