Python 执行matplotlib的CGI脚本可写目录时出错

Python 执行matplotlib的CGI脚本可写目录时出错,python,matplotlib,cgi,statsmodels,Python,Matplotlib,Cgi,Statsmodels,我知道类似的问题在这个主题中得到了解决: ,但我在执行CGI脚本时遇到问题。 我使用HTML公式输入一些数据,并根据这些数据通过statsmodels生成OLS模型,并将结果打印为HTML页面。 如果执行python脚本,则会出现以下错误: 基本错误-创建/var/www/.matplotlib失败;考虑将MPLCONDISDR设置为可用于MaToTLIB配置数据的可写目录< /代码> /P> 在导入matplotlib之前,我在代码中设置了MPLCONFIGDIR,并确保该目录具有权限,以

我知道类似的问题在这个主题中得到了解决:

,但我在执行CGI脚本时遇到问题。 我使用HTML公式输入一些数据,并根据这些数据通过statsmodels生成OLS模型,并将结果打印为HTML页面。 如果执行python脚本,则会出现以下错误:

基本错误-
创建/var/www/.matplotlib失败;考虑将MPLCONDISDR设置为可用于MaToTLIB配置数据的可写目录< /代码> /P>
在导入matplotlib之前,我在代码中设置了MPLCONFIGDIR,并确保该目录具有权限,以便应用程序可以将其写入,如下所示:

import os
os.environ['MPLCONFIGDIR'] = "/home/lab/website/graph"
import matplotlib

但是我没有在我的脚本中导入matplotlib模块,只有
CGI
statsmodels.api
MySQLdb
numpy

如果你愿意,这是我的CGI脚本-


我不知道,如果我必须设置matplotlib文件夹的权限,我可以将其作为CGI脚本的执行器写入,或者以某种方式将matplotlib文件夹设置为不同的路径(我可以写入)。顺便说一句,我没有自己的服务器,它只是学校服务器。

你没有显式导入
matplotlib
,但是
statsmodels.api
导入
pandas
,反过来导入
matplotlib
(你可以通过回溯看到所有的读取)

因此,为了运行脚本,您仍然需要一个可写的
MPLCONFIGDIR
。您已经知道了如何执行此操作的答案,但如果您想了解更多信息,可以参考一些有关设置
matplotlib
环境变量的文档


在导入
statsmodels.api
之前,只需将其添加到文件中就足够了:

import os
os.environ['MPLCONFIGDIR'] = "/home/lab/website/graph"

您没有显式导入
matplotlib
,但是
statsmodels.api
导入
pandas
,反过来
pandas
导入
matplotlib
(您可以通过回溯查看所有tht读取)

因此,为了运行脚本,您仍然需要一个可写的
MPLCONFIGDIR
。您已经知道了如何执行此操作的答案,但如果您想了解更多信息,可以参考一些有关设置
matplotlib
环境变量的文档


在导入
statsmodels.api
之前,只需将其添加到文件中就足够了:

import os
os.environ['MPLCONFIGDIR'] = "/home/lab/website/graph"

也许是个愚蠢的问题,但我对apache或python不太熟悉,只是初学者。我必须这样做:
import os
os.environ['MPLCONFIGDIR']=“/some/my/path”
import matplotlib
到导入matplotlib的pandas文件中?当我开始使用python和localhost时,我还查看了您编写的链接以及类似于我在windows中所做的事情(设置环境变量)。但我通过WinSCP连接到服务器,它使用
shshell
。我尝试
call/bin/sh
运行shell,但给了我错误,老实说,我不知道我是否做得对,或者必须去服务器管理员那里。也许是个愚蠢的问题,但我对apache或python不太熟悉,只是初学者。我必须这样做:
import os
os.environ['MPLCONFIGDIR']=“/some/my/path”
import matplotlib
到导入matplotlib的pandas文件中?当我开始使用python和localhost时,我还查看了您编写的链接以及类似于我在windows中所做的事情(设置环境变量)。但我通过WinSCP连接到服务器,它使用
shshell
。我尝试
调用/bin/sh
来运行shell,但给了我错误,老实说,我不知道我是否做得对,或者必须去服务器管理员那个里。