【发布时间】: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