私は現在、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 を与えていないと思いますか? モジュールによるメモリの使用方法を変更する方法はありますか?