2010-04-01 38 views
5

Mọi thứ hoạt động như được cho là trên máy chủ phát triển Django. Trong Apache, ứng dụng django cũng hoạt động ngoại trừ khi matplotlib được sử dụng. Đây là lỗi tôi nhận được:Matplotlib và WSGI/mod_python không hoạt động trên Apache

No module named multiarray. 

Exception Type: ImportError 
Exception Value: No module named multiarray 
Exception Location: /usr/share/pyshared/numpy/core/numerictypes.py in <module>, line 81 
Python Executable: /usr/bin/python 
Python Version: 2.6.4 

Từ vỏ trấu, cả hai câu lệnh đều hoạt động: import numpy.core.multiarray và nhập đa mảng. Bất kỳ ý tưởng? Cảm ơn

Khi tôi đang xem qua các tập tin gọn gàng, tôi đã tìm thấy mô-đun multiarray, có phần mở rộng 'so'. Tôi đoán, là mod_python không đọc những tập tin này.

+0

Điều gì sẽ xảy ra nếu bạn làm "từ numpy.core.multiarray import typeinfo, ndarray, mảng, trống, dtype" từ trình bao python? – Mark

+0

hoạt động tốt. không có thông báo lỗi. –

+0

Tôi dường như có một vấn đề tương tự. Tôi đang chạy py2.6, cherrypy, IIS, isapi_wsgi. Matplotlib hoạt động tốt từ trình bao Python. Cố gắng tải các mô-đun pyd (ví dụ: matplotlib._path) không thành công khi được gọi bởi IIS. Tôi đã kiểm tra os.environ và sys.path. – e1i45

Trả lời

8

Sự cố được giải quyết. Đây là những gì tôi đã làm.

Trước hết, trước khi tôi gặp phải lỗi nhập:

"Không có mô-đun có tên multiarray."

Tôi đã nhận được một lỗi như thế này:

": Không thể tạo /some/dir/.matplotlib; xem xét việc thiết MPLCONFIGDIR vào một thư mục có thể ghi dữ liệu cấu hình matplotlib"

Bằng cách thêm vào thư mục pyshared với biến PythonPath, lỗi này biến mất và tôi gặp lỗi nhập.

Vì vậy, đây là cách tôi đã khắc phục:

Đã xóa thư mục chia sẻ khỏi biến PythonPath.

Trước khi nhập các module matplotlib, thêm những dòng này:

import os 
os.environ['HOME']='/some/writable/dir' 

Tiếp theo, trước khi matplotlib.pyplot nhập hoặc pylab, thêm những dòng này:

import matplotlib 
matplotlib.use('Agg') 
# 'Agg' or whatever your backend is. 

Đây là tài liệu here.

Đó là! Nó làm việc trên python2.5 cho tôi bây giờ. Nhưng tôi tin rằng nó cũng sẽ hoạt động trên 2.6.

+1

trên hệ thống linux os.environ ['MPLCONFIGDIR'] = '/ tmp' cũng hoạt động. – erikvw

1

Trên Win32, tôi đã giải quyết được sự cố tương tự (không thể tải mô-đun pyd qua ISAPI_WSGI (IIS)) bằng cách hạ cấp từ py2.6.5 xuống py2.5. Có vẻ như đây có thể là lỗi Python đã được giới thiệu lại. Xem ví dụ: this discussion.

+0

Tôi nghĩ bạn nói đúng. Tôi có tất cả mọi thứ làm việc trên một cửa sổ máy với python 2,5. Tuy nhiên, Ubuntu đi kèm với python 2.6 và làm cho nó rất rất khó hạ xuống python 2.5. Trên hết, bạn không thể cài đặt mod_python nếu phiên bản python hiện tại của bạn là 2.5. –

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