Eclipse + PyDev + GAE内存缓存错误

boc*_*cco 19 python eclipse google-app-engine pydev

我已经开始使用Eclipe + PyDev作为开发我的第一个Google App Engine应用程序的环境.Eclipse是根据本教程配置的.

一切正常,直到我开始使用memcache.PyDev报告错误,我不知道如何解决它:

alt text http://www.freeimagehosting.net/uploads/fc176c0957.png

错误:导入的未定义变量:get

如何解决这个问题?当然,这只是PyDev检查器的问题.代码正确并在GAE上运行.

更新:

  1. 我正在使用PyDev 1.5.0,但经历了与1.4.8相同的经历.
  2. 我的PYTHONPATH包括(在Project Properties/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

更新2:

我看了一眼,C:\Program Files\Google\google_appengine\google\appengine\api\memcache\__init__.py发现get()没有声明为memcache模块功能.他们使用以下技巧来做到这一点(我没有听说过这种可能性):

_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())
Run Code Online (Sandbox Code Playgroud)

嗯......知道如何强迫PyDev识别出来吗?

ana*_*gue 25

有一个更清洁的解决方案:尝试将GAE的memcache添加到您的强制内置.

在PyDev-> Interpreter-Python-> ForcedBuiltins窗口中,添加"google.appengine.api.memcache"条目并应用.

双击memcache错误检查它们,它们消失了!

请确保系统pythonpath包含google APE安装目录.

  • 非常感谢.这个提示需要投票! (2认同)

Von*_*onC 3

您使用什么版本的 PyDev?最近的一个 (1.5) 还是 Google 教程提到的旧的?
请参阅此线程

PyROOT也有类似的问题

由于 PyDEV 插件不读取$HOME/.pystartup,触摸函数/类不是解决方案。因为它分析要导入的 python 模块的语法和结构,不是即时导入的,而是当我PYTHONPATH从 Eclipse 的首选项面板设置时导入的。

那么你PYTHONPATH参考了谷歌图书馆吗?


它们可能是 1.5 中的代码完成问题,这可能会迫使您禁用代码分析:Pydev 1.5.0 code anlaysis Breaks code pyqt4 code finish - ID:2855598

pyqt 4.5.4安装。
最初我pydev 1.4.8安装了开源版本,并且代码完成工作正常。
更新到 pydev 1.5.0 后,pyqt 代码完成功能停止运行。
在 中禁用 Pydev 代码分析后"eclipse preferences -> pydev -> editor -> code analysis -> do code analysis?",代码完成再次开始为 PyQt 类等工作。