在Heroku上使用import matplotlib失败,出现"No module named _tkinter"错误

13

我正在尝试在我的应用程序中使用matplotlib。我在Python2.7中创建了一个虚拟环境,pip安装了matplotlib,在本地顺利运行。

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

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

很奇怪,因为在虚拟环境下本地应用程序成功运行。是Heroku Python环境未配置以运行matplotlib吗?如果是这样,我应该采取什么步骤来启用它?


假设您在代码中使用matplotlib.show,那么您期望图形会显示在哪里?在服务器农场的监视器上吗?(首先为什么会有这样一个监视器?)在用户的Web浏览器中吗?(它应该如何从GUI窗口转换为HTML?)还是其他地方? - Karl Knechtel
1个回答

11

这应该能起作用

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

这将设置您的Matplotlib 后端使用Agg而不是Tk。至少对我有效。


4
为了准确性,请先在任何其他代码之前导入matplotlib模块。 - AruniRC
1
此外,您需要确保在任何可能导入matplotlib的其他包(例如skimage)之前放置此行。 - mobeets

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接