J'ai commencé à utiliser Eclipe + PyDev comme environnement pour développer ma première application pour Google App Engine. Eclipse est configuré selon this tutorial.Erreur Eclipse + PyDev + GAE memcache
Tout fonctionnait jusqu'à ce que je commence à utiliser memcache. PyDev signale les erreurs et je ne sais pas comment le résoudre:
alt text http://www.freeimagehosting.net/uploads/fc176c0957.png
Erreur: Undefined variable d'importation: obtenir
Comment résoudre ce problème? Bien sûr, c'est seulement un problème de vérificateur PyDev. Le code est correct et fonctionne sur GAE.
MISE À JOUR:
- J'utilise PyDev 1.5.0 mais connu la même chose avec 1.4.8.
- Mon PYTHONPATH comprend (ensemble dans les propriétés du projet/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
MISE À JOUR 2:
J'ai jeté un oeil à C:\Program Files\Google\google_appengine\google\appengine\api\memcache\__init__.py
et trouvé get()
n'est pas déclaré comme memcache
fonction du module. Ils utilisent l'astuce suivante pour le faire (je ne l'ai pas entendu parler de cette possibilité):
_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 ... Toute idée comment forcer PyDev reconnaître que?
Même chose avec 1.4.8? Cela devrait donc être un problème de définition de PYTHONPATH. – VonC
J'ai toujours eu cette erreur avec Eclipse Indigo SR2 + PyDev 2.5 (application Google App Engine 1.6.6) et Python 3.2. chose étrange ... La solution dans mon cas était d'ajouter '# @ PydevCodeAnalysisIgnore' en haut de la page que @Richard Green mentionne: http://stackoverflow.com/a/2930265/114029 –