Внутренняя ошибка сервера при размещении приложения Django на Heroku
Я только что разместил свое приложение django на heroku. Сказано, что сборка прошла успешно, но когда я открываю приложение, я вижу Internal Server Error. Я написал heroku logs --tail и он говорит, что нет модуля с именем _tkinter, однако, мое приложение вообще не использует этот модуль. В чем проблема? Может ли кто-нибудь помочь мне? Вот полный вывод heroku logs --tail 2022-01-23T15:59:25.156790+00:00 app[web.1]: import tkinter as TK 2022-01-23T15:59:25.156790+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/tkinter/init.py", line 37, in 2022-01-23T15:59:25.156790+00:00 app[web.1]: import _tkinter # Если это не удается, возможно, ваш Python не настроен на Tk 2022-01-23T15:59:25.156791+00:00 app[web.1]: ModuleNotFoundError: Нет модуля с именем '_tkinter' 2022-01-23T15:59:25.157000+00:00 app[web.1]: 10.1.20.212 - - - [23/Jan/2022:15:59:25 +0000] "GET /favicon.ico HTTP/1.1" 500 0 "-" "-" 2022-01-23T15:59:25.158452+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=thinking-meme-live.herokuapp.com request_id=09f7a53c-e31c-4496-8023-5ff6be64f006 fwd="193.174.122.67" dyno=web.1 connect=0ms service=42ms status=500 bytes=244 protocol=https
перенастроил его обратно на DEBUG = True все снова работало нормально. Итак, проблема была в порядке
вы можете увидеть больше информации в командной строке при запуске heroku logs -t -a <heroku-app> даже в режиме DEBUG = False.
Измените настройки логирования django в settings.py следующим образом:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': ('%(asctime)s [%(process)d] [%(levelname)s] '
'pathname=%(pathname)s lineno=%(lineno)s '
'funcname=%(funcName)s %(message)s'),
'datefmt': '%Y-%m-%d %H:%M:%S'
},
'simple': {
'format': '%(levelname)s %(message)s'
}
},
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
}
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': True,
},
'django.request': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
}
}
Затем запустите heroku logs -t -a <heroku-app> и откройте url, где вы ранее получили 500 Error, вы обнаружите проблему в логах.