Matplotlib и WSGI / mod_python не работают на Apache - PullRequest
5 голосов
/ 01 апреля 2010

На сервере разработки Django все работает как положено. В Apache приложение django также работает, за исключением случаев, когда используется matplotlib. Вот ошибка, которую я получаю:

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 

Из оболочки python работают оба оператора: import numpy.core.multiarray и import multiarray. Есть идеи? Спасибо

Когда я просматриваю пустые файлы, я нашел модуль с несколькими массивами, который имеет расширение «так». Я думаю, что mod_python не читает эти файлы.

Ответы [ 2 ]

9 голосов
/ 15 апреля 2010

Проблема решена. Вот что я сделал.

Прежде всего, до того, как я получил ошибку импорта:

"Нет модуля с именем multiarray."

Я получаю сообщение об ошибке, подобное этому:

": Не удалось создать /some/dir/.matplotlib; рассмотрите возможность установки MPLCONFIGDIR в доступный для записи каталог для данных конфигурации matplotlib"

После добавления папки pyshared в переменную PythonPath эта ошибка исчезла, и я получил ошибку импорта.

Итак, вот как я это исправил:

Удалена папка pyshared из переменной PythonPath.

Перед импортом модуля matplotlib добавьте следующие строки:

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

Далее, перед импортом matplotlib.pyplot или pylab добавьте следующие строки:

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

Это задокументировано здесь .

Это так! Он работает на python2.5 для меня сейчас. Но я верю, что это будет работать и на 2.6.

1 голос
/ 10 апреля 2010

На Win32 я решил похожую проблему (не имея возможности загружать модули pyd через ISAPI_WSGI (IIS)), понизив версию с py2.6.5 до py2.5. Кажется, что это может быть ошибка Python, которая была вновь введена. См. Например это обсуждение .

...