5

我在通过 Mac OS X 10.7.5 上的 apache 提供的 Django 应用程序中使用 matplotlib,但我无法让它为我绘制图形。我已经导入了 import matplotlib.pyplot as plt,在我看来这行,

plt.plot(x, y)

x并且y是numpy数组)导致错误

2013-01-23 16:39:16.731 httpd[381:203] The application with bundle ID (null) is running setugid(), which is not allowed.

在我的 apache 错误日志中。恐怕我不知道是什么setugid(),或者如何让我的应用程序允许运行它。我$MPLCONFIGDIR的设置为/tmp/.mplconfigapache 作为用户 _www 已向其写入了几个空目录,因此这似乎工作正常。谁能给我一个线索?

更新:如果我

from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure

并设置一个图形、子图和轴(整个 caboodle),我可以 savefig() 没有错误...... pyplot 需要什么额外的权限?

4

2 回答 2

2

导入后使用 agg 后端matplotlib消除了运行中的setugid()错误Flask appOS X ServerSierra

import matplotlib as mpl

mpl.use('agg')
于 2017-01-31T05:40:43.587 回答
0

您还可以为您的系统全局添加后端配置,~/.matplotlib/matplotlibrc例如:

backend: TkAgg

这也将解决您的问题。如果您没有matplotlibrc,只需创建一个。

于 2018-01-26T18:05:11.687 回答