2013-01-23 21 views
5

Tôi đang sử dụng matplotlib trong một ứng dụng Django được phục vụ thông qua apache trên Mac OS X 10.7.5 nhưng tôi không thể làm cho nó âm mưu một con số cho tôi. Tôi đã nhập khẩu matplotlib.pyplot as plt, và dòng trong quan điểm của tôi,setugid() lỗi bằng cách sử dụng matplotlib với apache và django

plt.plot(x, y) 

(xy là mảng NumPy) gây ra lỗi

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

trong tôi apache error_log. Tôi e rằng tôi không biết setugid() là gì hoặc cách chạy ứng dụng được phép cho ứng dụng của tôi. My $MPLCONFIGDIR được đặt thành /tmp/.mplconfig và apache khi người dùng _www đã viết một vài thư mục trống vào nó, để có vẻ như đang hoạt động OK. Có ai cho tôi một đầu mối không?

Cập nhật: nếu tôi

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

và thiết lập một con số, âm mưu phụ và trục (toàn bộ caboodle), tôi có thể savefig() mà không có lỗi ... những gì quyền phụ không pyplot cần?

+0

Thông tin thêm [tại đây] (https://blogs.oracle.com/dns/entry/understanding_the_authorization_framework_on). Có vẻ như một thiết lập bảo mật trên OS X đang ngăn chặn nó, và sửa chữa nhanh chóng có vẻ là để chạy apache như là người chủ. – tiago

+0

Cảm ơn bạn đã trả lời tiago. Mặc dù vậy, chạy apache là root hoàn toàn khôn ngoan? – xnx

+0

Trong Linux/Unix apache thường được bắt đầu bằng root nhưng chạy như người dùng 'không ai'. Tôi không biết trong trường hợp cụ thể của bạn nếu nó khôn ngoan hay không. – tiago

Trả lời

1

Sử dụng backend agg sau khi nhập matplotlib đã thoát khỏi những lỗi setugid() trong một Flask app chạy dưới OS X Server trong Sierra

import matplotlib as mpl 

mpl.use('agg') 
0

Bạn cũng có thể thêm cấu hình phụ trợ trên toàn cầu cho hệ thống của bạn trong ~/.matplotlib/matplotlibrc như:

backend: TkAgg 

Điều này cũng sẽ giải quyết được sự cố của bạn. Nếu bạn không có matplotlibrc, chỉ cần tạo một tài khoản.

Các vấn đề liên quan