【问题标题】:python virtualenv env variable error windows 10python virtualenv env变量错误windows 10
【发布时间】:2019-01-26 17:01:36
【问题描述】:

我正在尝试在我的 Python 3 虚拟环境中设置环境变量,方法是在激活文件中设置它们。 (在这种情况下,我正在为我的开发环境设置它们。)

激活 virtualenv (env/scripts/activate),在我的 powershell 行的开头看到“(venv)”,我运行:

python manage.py runserver

在 manage.py 文件中,我指定了要使用的设置文件。我将在这篇文章的下方显示该设置文件的内容。

这些变量是要传递给我的 Django 应用程序的,但我收到以下错误:

django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.

搜索互联网,主要是 SO,我找到了设置环境变量的不同方法,但每种方法都给出了相同的错误。所以我想知道我做错了什么。

我尝试过的:

看来我必须在位于env/scripts/activate.bat 的“activate.bat”文件中设置环境变量。我已经尝试了不同的方法,并且我在这个文件中尝试了相同的方法:env/scripts/activate(没有 .bat 扩展名),只是为了确定。

我尝试在激活文件的末尾添加以下格式的行:

set "SECRET_KEY=^af*$gsdgaGJA4gg($g134FADGJ"

set SECRET_KEY=^af*$gsdgaGJA4gg($g134FADGJ

export SECRET_KEY="^af*$gsdgaGJA4gg($g134FADGJ"

(上面的秘钥我并没有实际使用过,而是django自己生成的,这个仅供演示,不符合django的要求。)

我的 settings.py 文件

在我的 settings.py 文件中,我有这一行来获取 SECRET_KEY:

SECRET_KEY = os.environ['SECRET_KEY']

我决定不发布完整的 settings.py 文件,因为它似乎没有必要。

【问题讨论】:

  • 您是否知道除非您执行env/scripts/activate.bat,否则您的shell 不会考虑您的尝试?
  • 使用 virtualenvwrapper 提供的 postactivate 钩子。似乎是 stackoverflow.com/questions/9554087/… 的副本
  • 我没有使用 virtualenvwrapper,但我会尝试一下

标签: django python-3.x environment-variables virtualenv


【解决方案1】:

SECRET_KEY 必须包含在您的settings.py 中。

它可以取自环境变量,但你必须自己处理。

通过自己处理,我的意思是添加到settings.py sth 之类的:

SECRET_KEY = os.environ.get('SECRET_KEY', '')

【讨论】:

  • 我做到了,我在编辑帖子时不知何故剪掉了帖子的最后一部分。我又加了一遍。不过感谢您的快速回复。
  • 您可以尝试进入python manage.py shell 并运行:from django.conf import settings; print(settings.SECRET_KEY)。是空的吗?此外,您可以尝试为每个命令设置环境变量,例如 SECRET_KEY='xxx' python manage.py runserver
【解决方案2】:

我遇到了同样的问题,我通过关闭我的 shell,然后在添加环境变量后重新激活我的虚拟环境来修复它。

如果您打开 shell 并运行 python 解释器,您可以通过运行 Import osos.environ.keys() 查看您的环境变量。如果您没有看到您的变量,您可能需要重新启动您的虚拟环境,以便它能够获取您添加的系统变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 2016-11-23
    • 2011-07-01
    • 1970-01-01
    • 2016-01-11
    相关资源
    最近更新 更多