19 Stimmen

Eclipse+PyDev+GAE memcache "Undefinierte Variable von import: get"

Ich habe begonnen, Eclipse+PyDev als Umgebung für die Entwicklung meiner ersten App für Google App Engine zu verwenden. Eclipse ist konfiguriert nach diese Anleitung .

Alles funktionierte, bis ich begann, Memcache zu verwenden. PyDev meldet die Fehler und ich weiß nicht, wie ich sie beheben kann:

alt text

Fehler: Undefinierte Variable aus import: get

Wie kann man das beheben? Sicher, es ist nur PyDev Checker Problem. Der Code ist korrekt und läuft auf GAE.

UPDATE:

  1. Ich verwende PyDev 1.5.0, habe aber das gleiche Problem mit 1.4.8.
  2. Mein PYTHONPATH enthält (eingestellt in Projekteigenschaften/PyDev - PYTHONPATH):
    • C:\Program Files\Google\google_appengine
    • C:\Program Files\Google\google_appengine\lib\django
    • C:\Program Files\Google\google_appengine\lib\webob
    • C:\Program Files\Google\google_appengine\lib\yaml\lib

UPDATE 2:

Ich habe einen Blick auf C:\Program Files\Google\google_appengine\google\appengine\api\memcache\__init__.py und fand get() ist nicht deklariert als memcache Modulfunktion. Sie verwenden dazu den folgenden Trick (ich habe noch nie von einer solchen Möglichkeit gehört):

_CLIENT = None

def setup_client(client_obj):
  """Sets the Client object instance to use for all module-level methods.

  Use this method if you want to have customer persistent_id() or
  persistent_load() functions associated with your client.

  Args:
    client_obj: Instance of the memcache.Client object.
  """
  global _CLIENT
  var_dict = globals()

  _CLIENT = client_obj
  var_dict['set_servers'] = _CLIENT.set_servers
  var_dict['disconnect_all'] = _CLIENT.disconnect_all
  var_dict['forget_dead_hosts'] = _CLIENT.forget_dead_hosts
  var_dict['debuglog'] = _CLIENT.debuglog
  var_dict['get'] = _CLIENT.get
  var_dict['get_multi'] = _CLIENT.get_multi
  var_dict['set'] = _CLIENT.set
  var_dict['set_multi'] = _CLIENT.set_multi
  var_dict['add'] = _CLIENT.add
  var_dict['add_multi'] = _CLIENT.add_multi
  var_dict['replace'] = _CLIENT.replace
  var_dict['replace_multi'] = _CLIENT.replace_multi
  var_dict['delete'] = _CLIENT.delete
  var_dict['delete_multi'] = _CLIENT.delete_multi
  var_dict['incr'] = _CLIENT.incr
  var_dict['decr'] = _CLIENT.decr
  var_dict['flush_all'] = _CLIENT.flush_all
  var_dict['get_stats'] = _CLIENT.get_stats

setup_client(Client())

Hmm... Irgendeine Idee, wie man PyDev zwingen kann, das zu erkennen?

25voto

analogue Punkte 3130

Es gibt eine sauberere Lösung: Versuchen Sie, den GAE-Memcache zu Ihren erzwungenen Buildins hinzuzufügen.

Fügen Sie in Ihrem Fenster PyDev->Interpreter-Python->ForcedBuiltins den Eintrag "google.appengine.api.memcache" hinzu und wenden Sie ihn an.

Doppelklicken Sie auf die Memcache-Fehler, um sie zu überprüfen, sie verschwinden!

Bitte stellen Sie sicher, dass system pythonpath das google APE-Installationsverzeichnis enthält.

4voto

Richard Green Punkte 2007

Ich bin zwar ein bisschen spät dran, aber Sie können den folgenden Kommentar in alle Ihre Dateien einfügen, die Memcache verwenden, um die pydev-Analyse selektiv auszuschalten:

#@PydevCodeAnalysisIgnore

4voto

idbrii Punkte 10063

Wenn Sie nicht die gesamte Codeanalyse für Ihr Projekt/Modul deaktivieren wollen, dann schalten Sie sie nur für diese Zeile aus. Diese Antwort erklärt, dass Sie mit der Tastenkombination Strg+1 die Schnellkorrektur aufrufen und einfügen können #@UndefinedVariable am Ende der Zeile.

3voto

VonC Punkte 1117238

Welche Version von PyDev verwenden Sie? Eine aktuelle (1.5) oder die alte von der Google-Tutorial verwiesen?
Siehe dieses Thema .

Es gibt eine ähnliche Problem mit PyROOT

Da das PyDEV-Plugin nicht liest $HOME/.pystartup ist das Berühren von Funktionen/Klassen keine Lösung. Denn es analysiert die Syntax und Strukturen von Python-Modulen, die nicht on-the-fly importiert werden, sondern wenn ich die PYTHONPATH aus dem Eclipse-Einstellungsfenster.

Das gilt auch für Ihre PYTHONPATH auf die Google-Bibliothek verweisen?


Es könnte ein Problem mit der Code-Vervollständigung in 1.5 geben, das Sie zwingen könnte, die Code-Analyse zu deaktivieren: Pydev 1.5.0 code anlaysis bricht code pyqt4 code completion - ID: 2855598

haben pyqt 4.5.4 installiert.
Ursprünglich hatte ich pydev 1.4.8 die Open-Source-Version installiert und die Code-Vervollständigung funktionierte einwandfrei.
Nach dem Update auf pydev 1.5.0 funktioniert die Pyqt-Code-Vervollständigung nicht mehr.
Nach der Deaktivierung der Pydev-Codeanalyse in "eclipse preferences -> pydev -> editor -> code analysis -> do code analysis?" Die Code-Vervollständigung funktioniert jetzt wieder für PyQt Klassen usw.

3voto

kevin Punkte 1562

Das hat bei mir funktioniert und unterscheidet sich von den oben genannten Lösungen. Ziemlich einfach: http://blog.kicaj.com/fixing-pydev-memcache-unresolved-import/

Er sagt nur, dass der Ordner google_appengine zur Pydev Python-Interpreter-Bibliothek hinzugefügt werden soll.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X