1

我现在是 Django 和 Python 的初级用户,到目前为止,我在本地所做的任何事情都在上传后立即在我的主机上运行。我的主机由 Hostmonster 提供。

但是,我刚刚安装了 PyEnchant。我只使用它进行基本的拼写检查和建议新词。此外,“字符串”始终是由“+”分隔的单词字符串。

from enchant import Dict

def spellcheck(string):
    spellcheck = Dict("en-GB")

    suggestedword = []

    for word in string.split('+'):
        if len(word) > 2 and not spellcheck.check(word):
           suggestedword.append(spellcheck.suggest(word)[0])
    else:
        suggestedword.append(word)

return suggestedword

在本地,使用 Django 开发服务器,一切正常。在我的主机上,我得到:

Django Version: 1.4

Exception Type: MemoryError

Exception Location: /home/user/python/lib/python2.7/ctypes/__init__.py in _reset_cache, line 279

在“从附魔导入字典”之后几步似乎抛出了错误。

我猜字典太大而无法存储在临时内存中?

知道如何解决这个问题吗?如果我在问一些非常愚蠢的问题,或者以非常愚蠢的方式问我的话,请放轻松:)。

如果我遗漏了任何重要数据,那是因为我不知道它很重要,所以请随时告诉我还有哪些其他信息可以帮助解决这个问题(如果可以在共享主机上解决)。

提前感谢您的帮助!

编辑1:

使用 SSH,我可以导入和使用 PyEnchant:

>>> import enchant
>>> spellcheck = enchant.Dict("en-GB")
>>> spellcheck.suggest('nmae')
['name', 'mane']

这让我更加困惑,因为当我在我的问题中使用它时,我没有运气避免'MemoryError'。

编辑2:

仍然无法弄清楚这一点。如果我在任何模块中执行“导入附魔”,它似乎会导致 MemoryError,但我可以通过远程 shell 和 python 解释器使用“导入附魔”。

编辑3:

尽管如此,经过几天的谷歌搜索和尝试,我无法让这个 MemoryError 消失。以前有人用“PyEnchant”看过这个吗?我在想我的主机可能没有提供足够的内存来加载 PyEnchant 导入?有没有办法改变模块使用内存的方式?

4

1 回答 1

0

移动我的 Django 安装后,我也遇到了同样的问题。问题是 httpd (Apache) 访问数据库。就我而言,它是 Selinux,但我认为一般的 UNIX 类型文件权限会导致类似的问题。在这种情况下,在尝试可行的生产设置时,它在 Django 服务器上运行良好,但在我的本地 Apache 上运行良好。

  • 您的主机使用 Linux 吗?
  • 你能运行 Apache 来帮助确定问题吗?
于 2012-07-29T13:53:21.723 回答