2010-04-01 23 views
5

所有的东西都可以在Django开发服务器上运行。在Apache中,除了使用matplotlib时,django应用程序也可以工作。这里的错误,我得到:Matplotlib和WSGI/mod_python不能在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 

从Python外壳,既语句的工作:进口numpy.core.multiarray和进口多阵列。有任何想法吗? 谢谢

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

+0

如果您从python shell执行“from numpy.core.multiarray import typeinfo,ndarray,array,empty,dtype”,会发生什么? – Mark 2010-04-01 17:33:51

+0

,工作正常。没有错误信息。 – 2010-04-01 17:36:22

+0

我似乎有一个类似的问题。我正在运行py2.6,cherrypy,IIS,isapi_wsgi。 Matplotlib可以在Python shell中正常工作。尝试加载pyd模块(例如matplotlib._path)时由IIS调用失败。我检查了os.environ和sys.path。 – e1i45 2010-04-10 03:28:46

回答

8

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

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

“无模块多阵列命名。”

我得到这样的错误:

“:无法创建/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

os.environ ['MPLCONFIGDIR'] ='/ tmp'也可以。 – erikvw 2011-10-05 16:50:06

1

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

+0

我认为你是对的。我有一切与Python 2.5的Windows机器上工作。然而,Ubuntu自带python 2.6,并且很难降级到python 2.5。最重要的是,如果你当前的Python版本是2.5,你不能安装mod_python。在linux系统上的 – 2010-04-13 16:58:20

相关问题