2013-01-23 3 views
5

Ich benutze Matplotlib in einer Django-App durch Apache auf Mac OS X 10.7.5 serviert, aber ich kann es nicht zu einer Figur für mich plotten. Ich habe Import importiert matplotlib.pyplot as plt, und die Linie meiner Ansicht nachsetugid() Fehler bei der Verwendung von Matplotlib mit Apache und Django

plt.plot(x, y) 

(x und y sind numpy Arrays) den Fehler

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

in meinem Apache error_log verursacht. Ich fürchte, ich weiß nicht, was setugid() ist, oder wie man das Ausführen für meine App erlaubt. Meine $MPLCONFIGDIR ist auf /tmp/.mplconfig und Apache als Benutzer _www hat ein paar leere Verzeichnisse geschrieben, so dass scheint, funktioniert OK. Kann mir jemand einen Hinweis geben?

Update: wenn ich

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

und eine Figur, subplot und Achsen (der ganze Kram) eingerichtet ist, kann ich() ohne einen Fehler savefig ... was zusätzliche Berechtigungen erforderlich ist pyplot?

+0

Weitere Informationen [hier] (https://blogs.oracle.com/dns/entry/understanding_the_authorization_framework_on). Scheint so, als würde eine Sicherheitseinstellung auf OS X dies verhindern und die schnelle Lösung scheint Apache als root auszuführen. – tiago

+0

Danke für die Antwort Tiago. Ist der Apache als root aber durchaus weise? – xnx

+0

In Linux/Unix wird Apache normalerweise als root gestartet, läuft aber als Benutzer 'nobody'. Ich weiß nicht, ob es klug ist oder nicht. – tiago

Antwort

1

das agg Backend nach matplotlib in einem Flask app des setugid() Fehler losgeworden Import unter OS X Server in Lauf Sierra

import matplotlib as mpl 

mpl.use('agg') 
0

Sie auch global Backend-Konfiguration für Ihr System in ~/.matplotlib/matplotlibrc wie hinzufügen:

backend: TkAgg 

Dies wird Ihr Problem auch lösen. Wenn Sie nicht matplotlibrc haben, erstellen Sie einfach einen.

Verwandte Themen