python - 部署后在 Django 中使用 scipy.stats.stats

标签 python django statistics scipy python-module

我正在为一个严重依赖 scipy.stats.stats(scipy 版本 0.9.0)的包创建一个 django-powered (1.3) 接口(interface),称为 ovl 。在早期开发阶段,使用 django 自己的开发服务器,这没有问题。使用 apache debian/2.2.9 和 mod_wsgi 3.3 部署后,这会导致严重的问题。

无论我尝试在浏览器中加载什么 View ,它都会开始加载,并持续加载 5 分钟(直到超时),然后出现 500 页。 只需导入 scipy 即可,但不会使 scipy.stats.stats 甚至 scipy.stats 可用。这并不奇怪;在 scipy 的 init.py 的文档中声明子包 stats 需要显式导入。然而,对于子包 cluster 也是如此,它在 django 中导入(从网络 和 django-shell 中的)没有任何问题并且确实显示在 dir(scipy),它在 ipython(0.10.2) session 中不会,它只是没有出现,就像我有点预期的那样。

在命令dir(scipy)上;当来自网络(568 个字符串的列表,包括子包 cluster)在普通 ipython shell(564 个字符串,没有子包 cluster)和惊喜,惊喜,在 django shell 中。在 django shell 中,scipy 有 570 个属性,包括 clusterstats 包。

另一件事是,如果我继续导入 ovl-package,同时将 scipy.stats 导入保持一段距离(不在应用程序本身的一个文件中),有时我收到一个 ViewDoesNotExist 错误,指出 View 模块中没有方法索引,但显然有一个。这让我想起了 this .

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

  • 编辑 scipy 的 init 以导入 stats 包,使其“正常”出现在 dir(scipy) 中,并且可以通过 scipy.stats 访问,我可以使用旧代码。
  • 抓取 scipy 的 stat 子包并从中制作一个常规包(可能使用符号链接(symbolic link))

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

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

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

最佳答案

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

关于python - 部署后在 Django 中使用 scipy.stats.stats,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7819588/

相关文章:

r - 使用 gee() : NA/NaN/Inf in foreign function call (arg 3) 拟合模型时出错

Python,存储列表并插入到表的一列中

python - Pandas 数据框列 : Error while replacing string value with number

python - Django Python unique=True 表达式

r - lme4/矩阵 : Entry Point Not Found - how to fix?

statistics - 比例测试 : Z-test vs bootstrap/permutation - different results

python - 如何使用循环获取dir()中的值?

python - 如何比较两个不同列表中字典的键和值并打印不匹配的键和值

django - 图像不存在于validated_data

django - 压缩 django 迁移的最佳方法