gpt4 book ai didi

python - 将 Django 部署到 PythonAnywhere,尽管已设置,但无法使用环境变量中的 SECRET_KEY

转载 作者:太空宇宙 更新时间:2023-11-04 00:40:06 24 4
gpt4 key购买 nike

目前,我的错误日志只吐出了这个错误:

Error running WSGI application 
KeyError: 'SECRET_KEY'
File "/var/www/www_optranslations_net_wsgi.py", line 24, in <module>
application = get_wsgi_application()

File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
django.setup(set_prefix=False)

File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/__init__.py", line 22, in setup
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)

File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/conf/__init__.py", line 53, in __getattr__
self._setup(name)

File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/conf/__init__.py", line 41, in _setup
self._wrapped = Settings(settings_module)

File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/conf/__init__.py", line 97, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)

File "/home/optranslations/translation-site/optranslations/settings.py", line 24, in <module>
SECRET_KEY = os.environ.get('SECRET_KEY')

File "/home/optranslations/.virtualenvs/optl/lib/python3.5/os.py", line 725, in __getitem__
raise KeyError(key) from None

因此,据我所知,它找不到 SECRET_KEY 环境变量。从 bash 终端和交互式 python 解释器中的 os.environ 命令进行检查, key 已在其中正确设置。

此外,我都尝试了:

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

和:

SECRET_KEY = os.getenv('SECRET_KEY')

使用相同的代码在交互式 python 控制台中打印会生成正确的 key 。

它是按照 PythonAnywhere 的说明在我的 wsgi 文件中设置的,如下所示:

os.environ["SECRET_KEY"] = 'secretkeyhere'

以及在我的 virtualenv 的 postactivate 文件中:

export SECRET_KEY="secretkeyhere"

所以,这是怎么回事?它一直在我的日志中吐出这个错误,我在网上找不到任何东西,甚至开始弄清楚它是什么。不过,我确定这是我忽略的事情。我可以添加您认为需要的任何代码,所以请告诉我。

编辑

有趣的是,现在我明白了:

2017-02-15 07:46:27,883 :Error running WSGI application
2017-02-15 07:46:27,884 :django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
2017-02-15 07:46:27,884 : File "/var/www/www_optranslations_net_wsgi.py", line 24, in <module>
2017-02-15 07:46:27,885 : application = get_wsgi_application()
2017-02-15 07:46:27,885 :
2017-02-15 07:46:27,885 : File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
2017-02-15 07:46:27,885 : django.setup(set_prefix=False)
2017-02-15 07:46:27,885 :
2017-02-15 07:46:27,885 : File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/__init__.py", line 22, in setup
2017-02-15 07:46:27,885 : configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
2017-02-15 07:46:27,885 :
2017-02-15 07:46:27,886 : File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/conf/__init__.py", line 53, in __getattr__
2017-02-15 07:46:27,886 : self._setup(name)
2017-02-15 07:46:27,886 :
2017-02-15 07:46:27,886 : File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/conf/__init__.py", line 41, in _setup
2017-02-15 07:46:27,886 : self._wrapped = Settings(settings_module)
2017-02-15 07:46:27,886 :
2017-02-15 07:46:27,886 : File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/conf/__init__.py", line 116, in __init__
2017-02-15 07:46:27,886 : raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")

所以现在配置不当。但是,我所做的只是停用我的 virtualenv 并重新加载它以再次激活 postactivate 脚本。我仍然可以回显 $SECRET_KEY 并看到它很好(在交互式控制台中也可以看到 getenv)。

我还尝试通过运行以下命令进入 django shell:

python manage.py shell
from django.conf import settings
print(settings.SECRET_KEY)

当然,它会打印出正确的 key 。

最佳答案

好吧,答案原来是令人尴尬的。我的 WSGI 文件在这些行下面有我的 os.environ 声明:

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

他们必须在这些线之上,而且它立即奏效,现在回头看,原因很明显。

关于python - 将 Django 部署到 PythonAnywhere,尽管已设置,但无法使用环境变量中的 SECRET_KEY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42241669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com