当前位置: 首页 > 知识库问答 >
问题:

Pycharm:为运行manage.py任务设置环境变量

茅才
2023-03-14

我已经将我的SECRET_KEY值从设置文件中移出,当我加载virtualenv时,它会被设置。我可以从<code>python manage中确认该值存在。py外壳。

当我运行Django控制台时,< code>SECRET_KEY丢失了,这是应该的。因此,在首选项中,我转到控制台

正如预期的那样,我还无法运行 manage.py 任务,因为它尚未找到SECRET_KEY。所以我进入跑步

当我经营管理层时。py任务,例如runserver,我仍然得到KeyError:“SECRET_KEY”。

我把这把钥匙放在哪里?

共有3个答案

鄢英毅
2023-03-14

您可以通过以下方式设置manage.py任务环境变量:

首选项|语言

通过运行/调试/控制台配置设置环境变量不会影响pycharm内置的manage.py任务。

令狐阳秋
2023-03-14

要在PyCharm中设置环境变量,请执行以下操作:

    < li >打开“文件”菜单 < li >单击“设置” < li >单击"控制台"旁边的" "符号 < li >单击Python控制台 < li >单击“...”环境变量旁边的按钮 < li >单击“”添加环境变量
龚镜
2023-03-14

因为Py

然而,这个问题有几个基本的解决方案。正如@user3228589发布的那样,您可以在PyCharm中将其设置为变量。这有几个优点和缺点。我个人不喜欢这种方法,因为它不是单一源。为了解决这个问题,我在设置顶部使用了一个小功能。py文件,在本地<code>中查找变量。env文件。我把我所有的“私人”东西都放在那里了。我也可以在我的虚拟环境中参考这一点。

这是它的样子。

- settings.py

def get_env_variable(var_name, default=False):
    """
    Get the environment variable or return exception
    :param var_name: Environment Variable to lookup
    """
    try:
        return os.environ[var_name]
    except KeyError:
        import StringIO
        import ConfigParser
        env_file = os.environ.get('PROJECT_ENV_FILE', SITE_ROOT + "/.env")
        try:
            config = StringIO.StringIO()
            config.write("[DATA]\n")
            config.write(open(env_file).read())
            config.seek(0, os.SEEK_SET)
            cp = ConfigParser.ConfigParser()
            cp.readfp(config)
            value = dict(cp.items('DATA'))[var_name.lower()]
            if value.startswith('"') and value.endswith('"'):
                value = value[1:-1]
            elif value.startswith("'") and value.endswith("'"):
                value = value[1:-1]
            os.environ.setdefault(var_name, value)
            return value
        except (KeyError, IOError):
            if default is not False:
                return default
            from django.core.exceptions import ImproperlyConfigured
            error_msg = "Either set the env variable '{var}' or place it in your " \
                        "{env_file} file as '{var} = VALUE'"
            raise ImproperlyConfigured(error_msg.format(var=var_name, env_file=env_file))

# Make this unique, and don't share it with anybody.
SECRET_KEY = get_env_variable('SECRET_KEY')

然后env文件看起来像这样:

#!/bin/sh
#
# This should normally be placed in the ${SITE_ROOT}/.env
#
# DEPLOYMENT DO NOT MODIFY THESE..
SECRET_KEY='XXXSECRETKEY'

最后,您的虚拟环境/bin/postactive可以获取此文件的源代码。如果您愿意,您可以更进一步导出此处描述的变量,但由于设置文件直接调用. env,因此实际上没有必要。

 类似资料:
  • 问题内容: 我已将SECRET_KEY值从设置文件中移出,并且在加载virtualenv时将其设置。我可以确认来自的值。 当我运行Django控制台时,它应该丢失了。因此,在首选项中,我转到“控制台”>“ Django控制台”并加载SECRET_KEY适当的值。我回到Django控制台,SECRET_KEY就在那里。 不出所料,我还无法运行manage.py Task,因为它尚未找到。因此,我进入

  • 问题内容: 我不想每次运行gulp设置环境变量时都键入额外的参数。 我宁愿 通过任务从gulp中 设置环境变量。 什么是实现这一目标的好方法? 问题答案: 像这样使用它:

  • 问题内容: 我已经开始在Django项目中工作,我想设置一些环境变量,而不必手动设置它们或将bash文件作为源。 我想设置以下变量: 我已经读过这篇文章,但这并不能解决我想要的问题。另外,我尝试在Preferences- > Build,Execution,Deployment- > Console- > Python Console / Django Console中设置环境变量,但是它设置了解

  • 在我的一个项目中,我无法打开管理任务控制台。它适用于其他项目,但不适用于这个项目。它以前有效,但最近停止了。我尝试使用该项目的旧版本,但它仍然损坏。我收到以下错误:

  • 问题内容: 我想通过运行程序时设置环境变量。这可能吗? 我试图这样设置: 但是结果消息说FOO不存在。 问题答案: 您必须传递一个包含键 env 的选项对象,该键 env 的值本身就是键值对的对象。

  • ENV 设置环境变量 格式有两种: ENV <key> <value> ENV <key1>=<value1> <key2>=<value2>... 这个指令很简单,就是设置环境变量而已,无论是后面的其它指令,如 RUN,还是运行时的应用,都可以直接使用这里定义的环境变量。 ENV VERSION=1.0 DEBUG=on \ NAME="Happy Feet" 这个例子中演示了如何换行,以