部署后在django中使用scipy.stats.stats

koe*_*rro 5 python django statistics python-module scipy

我正在创建一个django驱动(1.3)接口的过程,该接口主要依赖于scipy.stats.stats(scipy版本0.9.0)ovl.在早期开发阶段,使用djangos自己的开发服务器,这没有问题.在使用apache debian/2.2.9和mod_wsgi 3.3进行部署之后,这会导致严重的问题.

无论我想在浏览器中加载什么视图,它都会开始加载,并持续5分钟(直到超时),并显示500页.只是导入scipy作品,但不会使scipy.stats.stats甚至scipy.stats可用.这并不奇怪; 在scipy的init .py 文档中,声明stats需要明确导入子包.然而,关于subpackage也是如此cluster,它在django中导入(来自web django-shell)没有任何问题,并且确实显示出来dir(scipy),它在ipython(0.10.2)中没有,它只是没有出现,就像我预期的那样.

在命令dir(scipy); 当它从clusterdjango shell中的普通ipython shell(564字符串,没有子包cluster)和惊喜,惊喜时,从web(包含568字符串的列表,包括子包)中返回不同的结果.在django shell中,scipy有570个属性,包括两者clusterstats包.

另一件事是,如果我继续导入ovl-package,同时保持scipy.stats导入一点距离(不是在应用程序本身的一个文件中),有时我得到一个ViewDoesNotExist错误,说明没有方法视图模块中的索引虽然显然有一个.这让我想起了这个.

所以现在我想到了这些相当丑陋的解决方案:

  • 编辑scipy的init来导入stats包,使它在dir(scipy)中"正常"显示,并且可以通过scipy.stats访问,我可以使用旧代码.
  • 抢夺scipy的stat子包并从中制作一个常规包(可能使用符号链接)

但是,我不愿意应用这些解决方案.在django环境中scipy出现的事实群集让我有点担心.我想也许这与从网上登录时成为www-data用户有关,但我不知道如何检查.

有没有人遇到过这个?部分内容?或者其他有用的想法?

哦,另一个django部署确实有效.

Rob*_*ern 5

mod_python用于尝试在同一进程中使用多个Python解释器.mod_wsgi可能也是这样做的.虽然这通常可行,但某些扩展模块不支持此功能.scipy.stats可能正在导入这样的扩展模块.我们在scipy邮件列表上有类似的报告,涉及mod_python下的scipy.stats.检查mod_wsgi文档以查看是否可以对其进行配置,使其在同一进程中不使用多个解释器,或者查找为应用程序的每个进程使用一个解释器的不同部署策略.

  • 使用这个答案,我用谷歌搜索并找到了[这个问题](http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API)以及解决方案和[解释](http://code.google的.com/p/modwsgi /维基/ ApplicationIssues#Python_Simplified_GIL_State_API).通过在我的httpd.conf中输入`<Directory/usr/local/www/wsgi-scripts> WSGIApplicationGroup%{GLOBAL} Order allow,deny Allow from all </ Directory>`来解决它.第二行是关于子解释器的一行. (2认同)