2010-04-01 28 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

相關問題