【问题标题】:Set environment variables when activating python virtual environment in windows在windows中激活python虚拟环境时设置环境变量
【发布时间】:2020-04-07 02:08:40
【问题描述】:

我希望能够在我的虚拟环境中设置环境变量,以便在我激活虚拟环境时它们在我的代码中可用。我用 venv 制作我的虚拟环境。我正在使用 VS 代码在 Windows 机器上工作。

我已经尝试过,但没有奏效。

  1. 将变量添加到 activate.bat 文件的末尾,如下所示:
set CLIENT_SECRET="MYSECRET"
  1. 将变量添加到 Activate.ps1 文件的末尾,如下所示:
$CLIENT_SECRET="MYSECRET"
  1. 将变量添加到激活文件的末尾,如下所示:
export CLIENT_SECRET="MYSECRET"

我发现了很多与我的主题相关的内容,但没有一个对我有用。怎么办?

【问题讨论】:

  • 找到我的环境没有困难,只是没有加载变量。我曾经在 Pycharm 工作过,我很喜欢,但后来改用 VS Code,因为它有很多免费的插件/与 Pycharm 的社区版相比支持更多的语言。也许,是时候拿出钱包了……:)
  • 如果你喜欢 PyCharm(我也喜欢),但你需要对多种语言的广泛支持,你可以考虑 IntelliJ - 我很好奇你认为 PyCharm 作为编辑器不支持哪些语言,即 VSCode不过会。通常答案是“有一个插件”。但是 IntelliJ 将为您提供对大多数语言的全功能支持 - 例如 Visual Studio 等其他类似平台。

标签: python windows visual-studio-code virtualenv python-venv


【解决方案1】:

如果你想在 VSCode 中设置你的开发环境,你可以简单地添加 .env 文件,其中包含在项目根目录中定义的所有机密。更多详情docs

【讨论】:

  • 我试了一下,但这似乎也不起作用。我在我的项目根文件夹中放置了一个名为 dev.env 的文件,其变量分配为 CLIENT_SECRET=MYSECRET
  • 你是如何运行你的脚本的?如果要自动加载环境,则需要使用 VSCode 调试器及其配置。默认情况下,只需点击 F5 或 Debug -> Start Debugging,在您的 python 文件上,VSCode 将从 .dev 文件加载环境。
  • 我在调试模式下尝试过,但也直接在我的终端中。也许我以错误的方式调用变量,我应该如何在我的代码中调用它们?
  • Python: 'os.environ.get("CLIENT_SECRET")'
  • 如果您将环境定义文件命名为 .env 以外的名称,则需要设置适当的设置以指向该文件,例如 "python.envFile" setting
【解决方案2】:

你的第一个解决方案

set CLIENT_SECRET=MYSECRET

activate.bat 中,当在终端中使用命令提示符作为默认 Shell 时应该可以工作。

您可以省略引号,除非它们是您的环境变量的一部分。

您可以验证,如果环境变量设置为:

echo %CLIENT_SECRET% 在 VS-Code 的终端中。

【讨论】:

  • 好的,它确实有效。但是,它仅在我在 Python Interactive 中运行它时才有效,而不是在我在终端中运行它时有效。此外,您建议的回显 var 的代码对我不起作用。