导入 matplotlib 失败,在 heroku 上没有名为 _tkinter 的模块

Posted

技术标签:

【中文标题】导入 matplotlib 失败,在 heroku 上没有名为 _tkinter 的模块【英文标题】:import matplotlib failing with No module named _tkinter on heroku 【发布时间】:2017-05-10 04:48:46 【问题描述】:

我正在尝试在我的应用程序中使用matplotlib。我在python2.7中创建了一个virtualenv,pip安装了matplotlib,在本地成功运行。

但是,当我将应用程序部署到 heroku(在 pip freeze 和其他必要步骤之后)时,我的应用程序崩溃了。当我检查日志时,我看到以下内容:

import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter

这很奇怪,因为应用程序在 venv 下成功运行在本地。 heroku python 环境是否未配置为运行matplotlib?如果是这样,我应该采取哪些步骤来启用它?

【问题讨论】:

【参考方案1】:

这应该可以解决问题

matplotlib.use('Agg')
import matplotlib.pyplot as plt

这会将您的 Matplotlib backend 设置为使用 Agg 而不是 Tk。至少对我有用:-)

【讨论】:

为了正确起见,import matplotlib 先于其他。 另外,您需要确保将此行放在任何其他可能也导入 matplotlib 的包之前,例如 skimage

以上是关于导入 matplotlib 失败,在 heroku 上没有名为 _tkinter 的模块的主要内容,如果未能解决你的问题,请参考以下文章

Axios GET请求在我的本地版本上运行,但在Heroku上失败-未捕获(承诺)错误:请求失败,状态码为500

导入matplotlib的python脚本成功但脚本的冻结二进制文件失败

使用 cx_Freeze 导入 matplotlib.pyplot 和 BeautifulSoup

heroku 在构建脚本中失败,但 heroku 本地网络很好

Heroku 在 uglifier 上构建失败

Heroku 构建依赖项安装失败