我试图将django项目配置为部署到heroku。我收到以下错误,但我真的不知道如何解决。
这是完整的追溯和错误:
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())
如果相关,我的manage.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)
有人可以在这里了解这个问题吗?如果是这样,你能不能很好地解释出什么问题了?谢谢!
我认为必须以某种方式设置DJANGO_SETTINGS_MODULE,因此我查看了文档(更新了链接)并发现:
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.settings在代码底部添加line:来自动化该过程。从现在开始,每次激活虚拟环境时,都将使用该应用程序的设置。
set DJANGO_SETTINGS_MODULE=mysite.settings