代码之家  ›  专栏  ›  技术社区  ›  Luiz C.

matplotlib和wsgi/mod_python不在apache上工作

  •  5
  • Luiz C.  · 技术社区  · 14 年前

    在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 shell中,这两个语句都可以工作:import numpy.core.multiarray和import multiarray。有什么想法吗? 谢谢

    在查看numpy文件时,我找到了multiarray模块,它的扩展名是“so”。我的猜测是mod_python没有读取这些文件。

    2 回复  |  直到 14 年前
        1
  •  8
  •   Luiz C.    14 年前

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

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

    “没有名为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 .

    那是!我现在正在做蟒蛇2.5。但我相信它在2.6上也会起作用。

        2
  •  1
  •   e1i45    14 年前

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