访问我的Heroku网站

时间:2018-04-25 18:06:42

标签: matplotlib heroku flask

我已在Heroku服务器上部署了Flask应用程序但它不起作用 我在浏览器中看到了这个

  

应用程序错误应用程序和页面发生错误   无法提供服务。如果您是应用程序所有者,请检查日志   详情。

导致此错误的原因是什么?

我跑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 :(得分:0)

您的追踪显示您的应用正在尝试导入Tkinter

  

ModuleNotFoundError:没有名为'_tkinter'的模块

听起来matplotlib是试图导入的库。

Heroku上没有Tkinter。好消息是matplotlib支持multiple backends,其中一些支持无头服务器。尝试修改代码以使用其他后端,例如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 Headless MatplotLib / Pyplot