如何在 PyCharm 中设置环境变量?

How to set environment variables in PyCharm?

提问人:lmiguelvargasf 提问时间:3/10/2017 最后编辑:David Beaucheminlmiguelvargasf 更新时间:10/24/2023 访问量:325607

问:

我已经开始处理 Django 项目,我想设置一些环境变量,而无需手动设置它们或将 bash 文件源到源代码。

我想设置以下变量:

export DATABASE_URL=postgres://127.0.0.1:5432/my_db_name
export DEBUG=1
# there are other variables, but they contain personal information

我已经读过这篇文章,但这并不能解决我想要的问题。此外,我尝试在 Preferences-> Build, Execution, Deployment->Console->Python Console/Django Console 中设置环境变量,但它为解释器设置了变量。

python django 环境变量

评论

0赞 YH Wu 7/19/2018
在 pycharm 中设置变量有一个缺点,那就是如果删除配置文件,就会丢失它们。另一种方法是设置默认值,如下所示 import os os.getenv(key='DATABASE_URL', default='postgres://127.0.0.1:5432/my_db_name')
0赞 lmiguelvargasf 7/19/2018
我认为,如果您使用我回答中提到的方法,您将不会丢失环境变量,因为它们将位于您使用的文件中。这个答案没有解决这个问题,因为它指的是如何在 PyCharm 中设置它们,而不是它们是否丢失。
7赞 lmiguelvargasf 7/19/2018
我也不认为直接在代码中对值进行硬编码是一个好主意。这是一种非常糟糕的做法。

答:

171赞 lmiguelvargasf 3/10/2017 #1

我能够使用名为 EnvFile 的 PyCharm 插件来解决这个问题。这个插件基本上允许设置环境变量以从一个或多个文件运行配置。

安装非常简单:

首选项 > 插件 > 浏览存储库... >搜索“env file”>安装插件

然后,我在项目根目录中创建了一个文件,名为 包含:environment.env

DATABASE_URL=postgres://127.0.0.1:5432/my_db_name
DEBUG=1

然后,我转到了 Run->Edit Configurations,并按照下图中的步骤操作:

Set Environment Variables

在 3 中,我选择了文件,然后我只需单击 PyCharm 中的播放按钮,一切都像魅力一样工作。environment.env

评论

14赞 jacekbj 6/30/2017
@lmiguelvargasf 对于这个答案,我感激不尽。看起来 Pycharm 无法在 .bashrc 中获取 env vars 源代码(我在 Linux 上)。这个插件为我节省了很多时间,因为我可以使用激活后文件作为源。
1赞 Danil 12/5/2017
@lmiguelvargasf是的,对不起。我的意思是 2017.2.4
2赞 losik123 3/7/2018
2017.3在这里工作。谢谢!
0赞 jonathan 10/19/2018
2017.2 工作
8赞 lmiguelvargasf 9/6/2019
@krinker,当您浏览文件时,请按+ +显示隐藏文件。cmdshift.
257赞 Joran Beasley 3/10/2017 #2

您可以在 Pycharm 的运行配置菜单中设置环境变量。

  1. 打开右上角的“运行配置”选择器,然后单击Edit Configurations...

Edit Configurations...

  1. 从菜单中选择正确的文件,找到并单击Environmental variables...

Environment variables

  1. 添加或更改变量,然后点按OK

Editing environmental variables

您可以使用 os.environ 访问环境变量

import os
print(os.environ['SOME_VAR'])

评论

3赞 alexey 9/12/2017
哦,我只是想在那行上打字,三点看起来是灰色的,所以我什至没有想过点击它。
11赞 LNI 11/2/2017
我尝试了这种方法,但 PyCharm 没有选择定义的 env var(我专门尝试设置DATABASE_URL)。看起来像一个 PyCharm 错误。
3赞 Roman Kazakov 1/15/2018
@LNI在 PyCharm 中,有两个地方可以设置 env 变量。一个是用于运行环境(它设置了 Joran 的显示方式),我们也可以设置可用于 Pycharm 中控制台的变量(它在此处设置首选项 -> 构建、执行、部署 -> 控制台 -> Python 控制台)
2赞 Kosmonaut 1/12/2020
这对我有用。不过,必须先重新启动我的口译员。
1赞 harry hartmann 11/1/2021
为什么在我的 PyCharm 2021.2.1(专业版)中不起作用,在 Ubuntu 18.04.6 仿生上使用。这显然是“简单的事情”不起作用,这太令人沮丧了。从内部打印出 sorted(os.environ.items()) django.conf.__init__甚至没有列出 PYTHONUNBUFFERED - 非常令人沮丧。
19赞 Nino van Hooff 3/15/2019 #3

此功能现已添加到 IDE 中(工作 Pycharm 2018.3)

只需单击运行配置中的选项卡,单击并单击 + 图标即可添加 env 文件EnvFileEnable EnvFile

Example with the glorious material theme

更新:与@imguelvargasf的答案基本相同,但默认情况下为我启用了该插件。

评论

5赞 alltej 4/14/2020
我是pycharm 2019,我没有看到标签。这在 Python 配置中可用吗(您的屏幕截图是 DjangoServer)?EnvFile
9赞 Dan Ciborowski - MSFT 6/9/2021
他安装了“EnvFile”插件。
12赞 marti_ 11/29/2021
此解决方案不适用于 Pycharm 2021
0赞 Paulo Moreira 10/6/2022
不适用于 PyCharm 2022.2.2(专业版)
0赞 9 Guy 2/16/2023
工作于 2022.3.2 (需要 EnvFile 插件)
1赞 Bex T. 9/26/2020 #4

以上方法都不适合我。如果您使用的是 Windows,请在 PyCharm 终端上尝试以下操作:

setx YOUR_VAR "VALUE"

您可以在脚本中使用 访问它。os.environ['YOUR_VAR']

7赞 kjoeter 12/31/2020 #5

这是在 pycharm flask/django 控制台中获取 .env(和 .flaskenv)文件的方法。当然,它也适用于普通的 python 控制台。

  1. 在您的环境中执行(与 pycharm 指向的相同)。pip install python-dotenv

  2. 转到: 设置 > 构建、执行、部署 > 控制台 > Flask/django 控制台

  3. “起始脚本”中,在顶部附近包含如下内容:

    from dotenv import load_dotenv
    load_dotenv(verbose=True)

.env 文件可能如下所示:export KEY=VALUE

是否包含 dotenv 读取它并不重要。export

作为替代方法,您还可以在相应的虚拟环境的激活 shell 脚本中获取 .env 文件。

评论

1赞 hurlbz 12/2/2021
谢谢,这个答案实际上解决了终端中的环境,而不仅仅是运行配置中。
-1赞 user12246115 7/10/2021 #6

在 Pycharm Python 控制台中,只需键入

ENV_VAR_NAME="STRING VARIABLE"
INT_VAR_NAME=5

与其他 Python 文本编辑器不同,您不会添加 Pycharmexport

评论

1赞 Alif 5/6/2022
那行不通!
32赞 Jarad 1/15/2022 #7

最初的问题是:

如何在 PyCharm 中设置环境变量?

两个投票最多的答案告诉你如何为 PyCharm 运行/调试配置设置环境变量 - 在“环境变量”中手动输入它们或使用 EnvFile 插件。

在使用 PyCharm 多年后,我了解到还有其他关键领域可以设置 PyCharm 环境变量。EnvFile 不适用于这些其他领域!

以下是要查找的 ELSE 位置(在“设置”中):

  • 工具 > 终端>环境变量
  • 语言和框架 > Django > 环境变量
  • 生成、执行、部署 > 控制台 > Python 控制台 >环境变量
  • 构建、执行、部署>控制台 > Django 控制台 > 环境变量

当然,还有您已经提到的运行/调试配置。

评论

1赞 rioted 5/21/2023
这个答案是IMO最好的。我唯一缺少的是如何设置它,使其也适用于.django_test_manage.py
0赞 ht96 8/2/2023
谢谢 - python run config 中的变量不会转换为控制台或终端。因此,理解这一点非常重要,您基本上必须将它们设置在多个位置。
2赞 vijayakumar k 1/28/2022 #8

这种方法对我从 .env 文件调用环境变量有很大帮助,而且它也非常容易实现。

  1. 在项目的根文件夹中创建一个 .env 文件

  2. 安装名为“python-dotenv”的软件包"

  3. 在要使用环境变量的 .py 文件中导入并加载包,如下所示

     import os
     from dotenv import load_dotenv, find_dotenv
    
     load_dotenv(find_dotenv())
     any_secret_var = os.get_env("SECRET_KEY")
    

和 BOOM 它会像魔术一样工作

.env 文件应如下所示, 不要在 .env 文件中的值周围放置任何 qoutes

    SECRET_KEY=any_secret_value_you_need_to_place_in
0赞 gilcu2 4/24/2022 #9

使用虚拟环境测试的解决方案。

创建一个脚本来定义和导出或获取 env var。然后将脚本定义为现有虚拟环境的 python 解释器。该解决方案适用于任何任务,如运行、调试、控制台......

示例脚本:

#!/bin/bash


DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
export VAR1="TEST1"
source $DIR/../../.env
$DIR/python "$@"
1赞 Zijian Zhang 6/23/2022 #10

如果有人想为他们的所有运行/调试配置设置环境变量,我在这里列出了我的解决方案。

  1. 转到其他答案所指的编辑配置。
  2. 单击面板中的编辑配置模板
  3. 在那里编辑环境变量。

这样,每次创建新配置时,变量都会在那里。

4赞 Abhishake Gupta 2/3/2023 #11

假设环境变量位于文件和存储中,如下所示。 将它们全部复制到剪贴板Ctrl+A -> Ctrl+C

Environment Variables

然后单击 -> 。Edit ConfigurationsEnvironment VariablesPyCharm Env settings

现在单击小粘贴图标,所有环境变量都将可用于当前环境。enter image description here

0赞 H. Qasemi 5/29/2023 #12

这是在 pycharm 终端中设置环境变量的最佳方法。如果您使用的是虚拟环境,只需在脚本末尾添加以下行:venv/bin/activate

export $(grep -v '^#' .env | xargs)