Использование Django и PyEnchant: получение MemoryError на виртуальном хостинге, но не локально
Сейчас я начинающий пользователь 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
Похоже, что выдает ошибку через несколько шагов после 'из enchant import Dict'.
Я предполагаю, что словарь слишком велик для хранения во временной памяти?
Есть идеи как обойти это? Пожалуйста, будьте осторожны со мной, если я или спрашиваю что-то очень глупое, или очень глупым образом:).
Если я опускаю какие-либо важные данные, это потому, что я не знаю, что это важно, поэтому не стесняйтесь сообщить мне, какая другая информация поможет решить эту проблему (если она может быть решена на общем хосте).
Заранее благодарю за любую помощь!
EDIT1:
Используя SSH, я могу импортировать и использовать PyEnchant:
>>> import enchant
>>> spellcheck = enchant.Dict("en-GB")
>>> spellcheck.suggest('nmae')
['name', 'mane']
Это делает меня еще более запутанным, поскольку мне не повезло избежать "MemoryError", когда я использую его, как указано выше в моем вопросе.
EDIT2:
Все еще не в состоянии понять это. Если я выполняю 'import enchant' в каком-либо модуле, это, похоже, вызывает MemoryError, но я могу использовать 'import enchant' через удаленную оболочку и интерпретатор python.
EDIT3:
Тем не менее, после нескольких дней поиска и поиска, я не могу заставить эту MemoryError исчезнуть. Кто-нибудь видел это раньше с "PyEnchant"? Я думаю, что мой хост, возможно, не дает достаточно оперативной памяти для загрузки импорта PyEnchant? Есть ли способ изменить использование памяти модулем?
1 ответ
У меня только что была та же самая проблема после перемещения моей установки Django. Проблема заключалась в доступе httpd (Apache) к базе данных. В моем случае это был Selinux, но я предполагаю, что общие права доступа к файлам типа UNIX вызовут аналогичную проблему. В этом случае он работал нормально на сервере Django, но не на моем локальном Apache, когда пробовал жизнеспособную производственную настройку.
- Ваш хост использует Linux?
- Не могли бы вы запустить Apache, чтобы помочь определить проблему?