Подтвердить что ты не робот

Использование Python NLTK (2.0b5) в Google App Engine

Я пытаюсь заставить NLTK (Natural Language Toolkit) работать в Google App Engine. Следующие шаги были следующими:

  • Загрузите программу установки и запустите ее (файл .dmg, поскольку я использую Mac).
  • скопируйте папку nltk из каталога python site-packages и поместите ее как подпапку в папку проекта.
  • Создайте модуль python в папке, содержащей подпапку nltk, и добавьте строку: from nltk.tokenize import *

К сожалению, после его запуска я получаю эту ошибку (обратите внимание, что эта ошибка возникает глубоко внутри NLTK, и я вижу ее для моей установки системы python, а не той, которая находится в подпапке проекта GAE ):

 <type 'exceptions.ImportError'>: No module named nltk
Traceback (most recent call last):
  File "/base/data/home/apps/xxxx/1.335654715894946084/main.py", line 13, in <module>
    from lingua import reducer
  File "/base/data/home/apps/xxxx/1.335654715894946084/lingua/reducer.py", line 11, in <module>
    from nltk.tokenizer import *
  File "/base/data/home/apps/xxxx/1.335654715894946084/lingua/nltk/__init__.py", line 73, in <module>
    from internals import config_java
  File "/base/data/home/apps/xxxx/1.335654715894946084/lingua/nltk/internals.py", line 19, in <module>
    from nltk import __file__

Примечание: так выглядит ошибка в журналах при загрузке в GAE. Если я запустил его локально, то получаю ту же ошибку (за исключением того, что она возникает из моего экземпляра сайта-пакета NLTK... поэтому никакой разницы нет). И "xxxx" означает название проекта.

Итак, вкратце:

  • Я пытаюсь сделать то, что я пытаюсь сделать? Будет ли NLTK работать в App Engine?
  • Есть ли что-то, что я пропустил? То есть: копирование "nltk" в проект GAE недостаточно?

EDIT: исправлена ​​опечатка и удалена ненужный шаг

4b9b3361

Ответ 1

Проблема заключается в том, что nltk пытается выполнить рекурсивный импорт: при импортировании nltk/__init__.py он импортирует nltk/internals.py, который затем пытается снова импортировать nltk. Поскольку nltk находится в середине самого импорта, он терпит неудачу с (весьма бесполезной) ошибкой. Что бы они ни делали, все равно странно - это неудивительно, что-то вроде from nltk import __file__ breaks.

Это похоже на проблему с самим nltk - работает ли она при импорте непосредственно с консоли Python? Если это так, они должны делать какие-то трюки в установленной версии. Я предлагаю просить группы nltk, к чему они стремятся, и о том, как обойти это.

Ответ 2

oakmad удалось успешно работать развертывание модулей НЕСКОЛЬКО NLTK для GAE. Надеюсь это поможет. Но, но, честно говоря, я до сих пор не считаю это правдой даже после того, как прочитал сообщение.

Ответ 4

NLTK, я считаю, стараюсь изо всех сил быть чистым-Python как откат (изящное ухудшение), когда он не может иметь расширения C-кодированного ускорителя, которые он хотел бы. Однако всегда нужно двигаться с полной осторожностью, чтобы смело вводить такой богатый пакет (рекурсивно застегивая все файлы .py, а использование zipimport может быть менее flaky).

Мой установленный NLTK, 0.95, я считаю, не имеет ntlk.tokenizer - у него есть nltk.tokenize, нет конечного R, но, очевидно, даже самая минута такая опечатка на 100% невыносима, когда вы пытаетесь сказать компьютер точно, что вы хотите, поэтому я предполагаю, что это не опечатка с вашей стороны, а скорее использование совершенно другого и несовместимого выпуска NLTK, так что WHAT релиз - это то, что имеет подпакет с именем tokenizer, а не tokenize?

Если вы найдете политику нулевой терпимости для однократных опечаток, которые не могут быть перенесены, компьютеры и их программирование вряд ли будут терпимы к вам...; -)