使用matplotlib与apache和django的setugid()错误

时间:2013-01-23 16:48:52

标签: django macos apache matplotlib

我在Mac OS X 10.7.5上通过apache服务的Django应用程序中使用matplotlib,但我不能让它为我绘制一个数字。我导入了导入matplotlib.pyplot as plt,以及我视图中的行

plt.plot(x, y)

xy是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 error_log中。我担心我不知道setugid()是什么,或者如何让我的应用允许运行它。 我的$MPLCONFIGDIR设置为/tmp/.mplconfig,apache为用户_www写了几个空目录,所以这似乎正常。 谁能给我一个线索?

更新:如果我

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

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

2 个答案:

答案 0 :(得分:2)

导入matplotlib后使用agg后端,摆脱了setugid() Flask app OS X Server Sierraimport matplotlib as mpl mpl.use('agg') 错误

the spread operator can be applied only to iterable objects

答案 1 :(得分:0)

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

backend: TkAgg

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