Frage

Ich habe versucht, die NLTK (Natural Language Toolkit) arbeitet auf dem Google App Engine zu machen. Die Schritte, die ich gefolgt sind:

  1. das Installationsprogramm herunterladen und ausführen (eine .dmg-Datei, wie ich einen Mac benutze).
  2. Kopieren Sie den Ordner nltk aus dem Python-site-packages-Verzeichnis und legen Sie es als einen Unterordner in meinem Projektordner.
  3. Erstellen Sie ein Python-Modul in dem Ordner, der die nltk Unterordner und fügen Sie die Zeile enthält: from nltk.tokenize import *

Leider, nachdem es gestartet ich diesen Fehler (beachten Sie, dass dieser Fehler tief in NLTK angehoben und ich sehe es für mein System Installation von Python auf den einen, im Gegensatz, die im Unterverzeichnis des GAE Projektes ):

 <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__

Hinweis: Dies ist, wie der Fehler in den Protokollen aussieht, wenn auf GAE hochgeladen. Wenn ich es lokal ausführen bekomme ich den gleichen Fehler (außer es in meiner Website-Pakete Instanz NLTK ... so gibt es keinen Unterschied stammen scheint). Und "xxxx" bedeutet die Projektnamen.

Also zusammenfassend:

  • Ist das, was ich versuche sogar möglich, zu tun? Werde NLTK läuft auch auf der App Engine?
  • Gibt es etwas, was ich verpasst? Das heißt: „nltk“ das GAE Projekt Kopieren ist nicht genug

EDIT: festen Tippfehler und entfernt unnötiger Schritt

War es hilfreich?

Lösung

Das Problem hierbei ist, dass nltk rekursiven Importen zu tun versucht: Wenn nltk/__init__.py importiert wird, importiert es nltk/internals.py, die dann nltk wieder zu importieren versucht. Da nltk in der Mitte selbst importiert wird, schlägt es mit einem (eher nicht hilfreich) Fehlern. Was auch immer sie tun, ist ziemlich komisch sowieso -. Es ist nicht verwunderlich, so etwas wie from nltk import __file__ Pausen

Das sieht wie ein Problem mit nltk selbst - es, wenn aus einer Python-Konsole direkt importiert funktioniert? Wenn ja, müssen sie irgendeine Art von Betrug in der installierten Version tun. Ich würde vorschlagen, auf den nltk Gruppen zu fragen, was sie vorhaben und wie um ihn zu arbeiten.

Andere Tipps

oakmad ist es gelungen, durch die Arbeit Bereitstellung von MEHR NLTK Module GAE. Hoffe das hilft. Aber, aber ehrlich gesagt, habe ich noch nicht denken, es ist wahr, selbst nachdem die Post lesen.

Ich habe gegabelt NLTK 2.0.3 auf GitHub es auf App Engine zu laufen; Tokenisieren und einfacher POS-Tagging mit dem Tagger MaxEnt Treebank arbeiten.

NLTK, glaube ich, tut sein Bestes versuchen, pure-Python als Ausweich (Graceful Degradation) zu sein, wenn es nicht die C-codierten Beschleuniger Erweiterungen haben es gerne hätte. Aber man muss immer mit äußerster Sorgfalt zu bewegen kühn ein reichhaltiges Paket so (rekursiv alle der Py-Dateien zippen und Verwendung zipimport möglicherweise weniger flockig) zu injizieren.

Meine installiert NLTK, 0,95 Ich glaube, keine ntlk.tokenizer - es hat eine nltk.tokenize haben, keine Hinter R, aber natürlich auch die Minute so Tippfehler ist 100% unerträglich, wenn Sie versuchen, eine erzählen Computer genau das, was Sie wollen, so nehme ich das auf Ihrer Seite kein Tippfehler, sondern vielmehr Ihre Verwendung eines völlig unterschiedliche und inkompatible Version von NLTK, so, wAS Release ist es, dass ein subpackage namens tokenizer hat statt tokenize?

Wenn Sie eine Null-Toleranz-Politik für ein Zeichen Fehler schwer zu ertragen finden, Computer und deren Programmierung ist unwahrscheinlich, dass Sie sein erträglich ...; -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top