python教程—不适当配置:在访问设置之前,必须定义环境变量DJANGO_SETTINGS_MODULE或调用settings.configure()-Python实用宝典

python教程—不适当配置:在访问设置之前,必须定义环境变量DJANGO_SETTINGS_MODULE或调用settings.configure()

我试图将django项目配置为部署到heroku。我得到以下错误,我真的不知道如何修复它。

我试图将django项目配置为部署到heroku。我得到以下错误,我真的不知道如何修复它。

这里是full traceback and error:

    22:46:15 web.1 | Traceback (most recent call last): 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/arbiter.py", line 495, in spawn_worker 22:46:15 web.1 | worker.init_process() 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/workers/base.py", line 106, in init_process 22:46:15 web.1 | self.wsgi = self.app.wsgi() 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/app/base.py", line 114, in wsgi 22:46:15 web.1 | self.callable = self.load() 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 62, in load 22:46:15 web.1 | return self.load_wsgiapp() 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load_wsgiapp 22:46:15 web.1 | return util.import_app(self.app_uri) 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/util.py", line 354, in import_app 22:46:15 web.1 | __import__(module) 22:46:15 web.1 | File "/Users/nir/nirla/nirla/wsgi.py", line 12, in <module> 22:46:15 web.1 | from dj_static import Cling 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/dj_static.py", line 7, in <module> 22:46:15 web.1 | from django.contrib.staticfiles.handlers import StaticFilesHandler as DebugHandler 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 8, in <module> 22:46:15 web.1 | from django.contrib.staticfiles.views import serve 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/contrib/staticfiles/views.py", line 13, in <module> 22:46:15 web.1 | from django.views import static 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/views/static.py", line 96, in <module> 22:46:15 web.1 | template_translatable = ugettext_noop("Index of %(directory)s") 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 65, in gettext_noop 22:46:15 web.1 | return _trans.gettext_noop(message) 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 52, in __getattr__ 22:46:15 web.1 | if settings.USE_I18N: 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/conf/__init__.py", line 54, in __getattr__ 22:46:15 web.1 | self._setup(name) 22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/conf/__init__.py", line 47, in _setup 22:46:15 web.1 | % (desc, ENVIRONMENT_VARIABLE)) 22:46:15 web.1 | ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

这是我的wsgi。py < /强>文件:

    import os from django.core.wsgi import get_wsgi_application from dj_static import Cling os.environ.setdefault("DJANGO_SETTINGS_MODULE", "nirla.settings") #nirla is the name of the project application = Cling(get_wsgi_application())

如果它是相关的,我的管理。py < /强>文件:

    import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "nirla.settings") from django.core.management import execute_from_command_line execute_from_command_line(sys.argv)

有人能理解这里的问题吗?如果是的话,你能解释一下出了什么问题吗?谢谢你!

回答

我发现必须以某种方式设置文档(链接更新):

    export DJANGO_SETTINGS_MODULE=mysite.settings

虽然在heroku上运行服务器还不够,但是还需要在那里指定它。是这样的:

    heroku config:set DJANGO_SETTINGS_MODULE=mysite.settings --account <your account name>

在我的特殊情况下,我运行了这两个,一切都解决了:

    export DJANGO_SETTINGS_MODULE=nirla.settings heroku config:set DJANGO_SETTINGS_MODULE=nirla.settings --account personal

<强>编辑< /强>

我还想指出,每次关闭或重启虚拟环境时都必须重新执行此操作。相反,您应该通过转到venv/bin/activate并添加以下行来自动化该过程:set DJANGO_SETTINGS_MODULE=mysite。设置到代码底部。从现在开始,每次你激活虚拟环境,你都将使用该应用的设置。

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论

意见反馈 在线咨询 简繁切换 返回评论 返回顶部