1

私は現在、Django と Python の初心者レベルのユーザーです。これまでのところ、ローカルで行うことはすべて、アップロードするとすぐにホスティングで機能します。私のホスティングは Hostmonster によって提供されています。

ただし、PyEnchant をインストールしたところです。私がそれを使用するのは、基本的なスペル チェックと新しい単語の提案だけです。また、「string」は常に「+」で区切られた単語の文字列です。

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

「from enchant import Dict」の数ステップ後にエラーがスローされているようです。

辞書が大きすぎて一時メモリに保存できないのではないでしょうか?

これを回避する方法はありますか?私が非常にばかげたことを尋ねている場合、または非常にばかげた方法で質問している場合は、気楽にしてください:)。

重要なデータを省略している場合は、それが重要かどうかわからないためです。そのため、これを解決するのに役立つ他の情報を教えてください (共有ホストで解決できる場合)。

助けてくれてありがとう!

EDIT1:

SSH を使用して、PyEnchant をインポートして使用できます。

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

質問で上記のように使用すると、「MemoryError」を回避できなかったので、さらに混乱します。

EDIT2:

まだこれを理解することができません。モジュールで「エンチャントのインポート」を行うと、MemoryError が発生するようですが、リモート シェルと Python インタープリターを介して「エンチャントのインポート」を使用できます。

EDIT3:

それでも、数日間グーグルで調べて試してみましたが、このMemoryErrorを消すことはできません。「PyEnchant」でこれを見た人はいますか?私のホストは、おそらく PyEnchant インポートをロードするのに十分な RAM を与えていないと思いますか? モジュールによるメモリの使用方法を変更する方法はありますか?

4

1 に答える 1

0

Djangoのインストールを移動した後、同じ問題が発生しました。問題は、データベースへのhttpd(Apache)アクセスでした。私の場合はSelinuxでしたが、一般的なUNIXタイプのファイルパーミッションでも同様の問題が発生すると思います。この例では、実行可能な本番セットアップを試してみると、Djangoサーバーでは正常に機能しましたが、ローカルのApacheでは機能しませんでした。

  • ホストはLinuxを使用していますか?
  • 問題を特定するためにApacheを実行できますか?
于 2012-07-29T13:53:21.723 に答える