Доступ к моему сайту на Heroku - PullRequest
0 голосов
/ 25 апреля 2018

Я развернул приложение Flask на сервере Heroku, но оно не работает. Я вижу это в браузере

Ошибка приложения В приложении произошла ошибка, и ваша страница не может быть обработана.Если вы являетесь владельцем приложения, проверьте подробности в своих журналах.

Что вызывает эту ошибку?

Когда я запускаю heroku logs, я получил следующееЯ это исправлю?

2018-04-25T18:51:16.513351+00:00 app[web.1]:     _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
2018-04-25T18:51:16.513353+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-ile "/app/.heroku/python/lib/python3.6/site-packages/matplotlib/backends/backend_tkagg.py", line 4, in <module>
2018-04-25T18:51:16.596215+00:00 app[web.1]:     from . import tkagg  # Paint image to Tk photo blitter extension.
2018-04-25T18:51:16.596217+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/matplotlib/backends/tkagg.py", line 5, in <module>
2018-04-25T18:51:16.596218+00:00 app[web.1]:     from six.moves import tkinter as Tk
2018-04-25T18:51:16.596220+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/six.py", line 92, in __get__
2018-04-25T18:51:16.596222+00:00 app[web.1]:     result = self._resolve()
2018-04-25T18:51:16.596223+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/six.py", line 115, in _resolve
2018-04-25T18:51:16.596225+00:00 app[web.1]:     return _import_module(self.mod)
2018-04-25T18:51:16.596227+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/six.py", line 82, in _import_module
2018-04-25T18:51:16.596229+00:00 app[web.1]:     __import__(name)
2018-04-25T18:51:16.596230+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/tkinter/__init__.py", line 36, in <module>
2018-04-25T18:51:16.596232+00:00 app[web.1]:     import _tkinter # If this fails your Python may not be configured for Tk
2018-04-25T18:51:16.596720+00:00 app[web.1]: [2018-04-25 18:51:16 +0000] [9] [INFO] Worker exiting (pid: 9)
2018-04-25T18:51:16.596241+00:00 app[web.1]: ModuleNotFoundError: No module named '_tkinter'
2018-04-25T18:51:16.739539+00:00 app[web.1]: [2018-04-25 18:51:16 +0000] [4] [INFO] Shutting down: Master
2018-04-25T18:51:16.741786+00:00 app[web.1]: [2018-04-25 18:51:16 +0000] [4] [INFO] Reason: Worker failed to boot.
2018-04-25T18:51:16.862528+00:00 heroku[web.1]: State changed from up to crashed
2018-04-25T18:51:16.850843+00:00 heroku[web.1]: Process exited with status 3
(venv) MacBook-Pro-alkhas-b-Amjad:flaskhpbio joodi$ 

Значит ли это, что чего-то не хватает?

1 Ответ

0 голосов
/ 25 апреля 2018

Ваша трассировка показывает, что ваше приложение пытается импортировать Tkinter :

ModuleNotFoundError: Нет модуля с именем _tkinter

Звучит такmatplotlib - это библиотека, которая пытается выполнить импорт.

Tkinter недоступен в Heroku.Хорошей новостью является то, что matplotlib поддерживает несколько бэкэндов , некоторые из которых работают на серверах без монитора.Попробуйте изменить свой код, чтобы использовать другой бэкэнд, например Agg:

import matplotlib
matplotlib.use('Agg')  # Must be done before importing pyplot
import matplotlib.pyplot as plt

Если вы используете функцию use(), это необходимо сделать перед импортом matplotlib.pyplot.Вызов use() после импорта pyplot не будет иметь никакого эффекта.Использование use() потребует изменений в вашем коде, если пользователи захотят использовать другой бэкэнд.Поэтому вам следует избегать явного вызова use(), если это не является абсолютно необходимым.

Вам придется зафиксировать это изменение и отправить его в Heroku.

См. Также Python HeadlessMatplotLib / Pyplot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...