Matplotlib和WSGI / mod_python不适用于Apache

时间:2010-04-01 15:07:50

标签: django apache2 mod-wsgi mod-python

一切都在Django开发服务器上运行。在Apache中,除了使用matplotlib之外,django应用程序也可以工作。这是我得到的错误:

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 shell中,两个语句都有效:import numpy.core.multiarray和import multiarray。有任何想法吗? 感谢

当我查看numpy文件时,我发现了多阵列模块,其扩展名为“so”。我的猜测是,mod_python没有读取这些文件。

2 个答案:

答案 0 :(得分:9)

问题解决了。这就是我所做的。

首先,在我收到导入错误之前:

“没有名为multiarray的模块。”

我收到这样的错误:

“:无法创建/some/dir/.matplotlib;请考虑将MPLCONFIGDIR设置为matplotlib配置数据的可写目录”

通过将pyshared文件夹添加到PythonPath变量,此错误消失了,我收到了导入错误。

所以这就是我修复它的方法:

从PythonPath变量中删除了pyshared文件夹。

在导入matplotlib模块之前,请添加以下行:

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

接下来,在导入matplotlib.pyplot或pylab之前,添加以下行:

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

记录在案here

那就是!现在我正在为python2.5工作。但我相信它也适用于2.6。

答案 1 :(得分:1)

在Win32上,我通过从py2.6.5降级到py2.5解决了类似的问题(无法通过ISAPI_WSGI(IIS)加载pyd模块)。看起来这可能是一个已经重新引入的Python bug。请参阅示例this discussion