Python 日食+;PyDev+;GAE memcache“;来自导入的未定义变量:get";

Python 日食+;PyDev+;GAE memcache“;来自导入的未定义变量:get";,python,eclipse,google-app-engine,pydev,Python,Eclipse,Google App Engine,Pydev,我已经开始使用Eclipe+PyDev作为为Google app Engine开发第一个应用程序的环境。Eclipse是根据配置的 在我开始使用memcache之前,一切都正常。PyDev报告错误,我不知道如何修复: 错误:导入的未定义变量:get 如何解决这个问题? 当然,这只是PyDev检查器的问题。代码正确并在GAE上运行 更新: 我正在使用Pydev1.5.0,但在1.4.8中也有同样的体验 我的PYTHONPATH包括(在项目属性/PyDev-PYTHONPATH中设置): C:\

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

在我开始使用memcache之前,一切都正常。PyDev报告错误,我不知道如何修复:

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

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

更新:


  • 我正在使用Pydev1.5.0,但在1.4.8中也有同样的体验
  • 我的PYTHONPATH包括(在项目属性/PyDev-PYTHONPATH中设置):
    • C:\Program Files\Google\Google\u appengine
    • C:\Program Files\Google\Google\u appengine\lib\django
    • C:\Program Files\Google\Google\u appengine\lib\webob
    • C:\Program Files\Google\Google\u appengine\lib\yaml\lib
  • 更新2:

    我查看了
    C:\Program Files\Google\Google\appengine\Google\appengine\api\memcache\\uuu init\uuuu.py
    ,发现
    get()
    未声明为
    memcache
    模块函数。他们使用以下技巧来实现这一点(我没有听说这种可能性):


    嗯。。。你知道如何强迫PyDev认识到这一点吗?

    你使用的是什么版本的PyDev?谷歌教程中提到的最新版本(1.5版)还是旧版本?

    有一个类似的例子

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

    那么你的
    PYTHONPATH
    引用了谷歌库吗


    它们可能是1.5中的代码完成问题,可能会迫使您禁用代码分析:

    已安装
    pyqt 4.5.4

    最初我安装了
    pydev1.4.8
    开源版本,代码完成工作正常。
    更新到pydev 1.5.0后,pyqt代码完成功能停止。
    在“eclipse首选项->Pydev->编辑器->代码分析->执行代码分析?”中禁用Pydev代码分析后,PyQt的代码完成再次开始工作 课程等


    我参加聚会有点晚了,但您可以在使用memcache有选择地关闭pydev分析的所有文件中添加以下注释:


    #@pydevcodeanlysisignore

    如果不想关闭项目/模块的所有代码分析,那么只需关闭该行的代码分析。说明您可以按Ctrl+1键启动“快速修复”,并在行尾插入
    #@UndefinedVariable

    有一个更干净的解决方案:尝试将GAE的memcache添加到强制内置

    在PyDev->解释器Python->ForcedBuiltins窗口中,添加“google.appengine.api.memcache”条目并应用

    双击memcache错误以将其检查回来,它们将消失


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

    这对我来说很有效,它与上面的解决方案不同。 直截了当地说:


    只是说要将google_appengine文件夹添加到pydev python解释器库中。

    我通过在文件顶部的代码中添加以下几行来修复此问题:

    from google.appengine.api import memcache
    # work-around for Eclipse+PyDev+GAE memcache error
    if not hasattr(memcache, 'set'):
        Client=None
        memcache.setup_client(Client)
        memcache = Client
    
    您可以在生产版本中对其进行通信


    这只是为了让eclipse满意并让代码完成工作。

    我使用的是PyDev 1.5.0,但在1.4.8中也经历了同样的情况。1.4.8中也经历了同样的情况吗?所以这应该是PYTHONPATH定义的问题,我在EclipseIndigoSR2+Pydev2.5(谷歌应用程序引擎1.6.6应用程序)和Python3.2中仍然遇到了这个错误。奇怪的事。。。我的解决方案是在页面顶部添加
    #@PydevcodeAlysisignore
    ,正如@Richard Green所提到的:不知道为什么,但我必须从eclipse中删除项目并重新导入它才能工作。在我删除并重新导入GAE后,这对我在OS X Lion和Indigo以及最新的PyDev 2.5+和GAE 1.6.6中起到了作用项目如@Ralphz所说…要在OS X中添加您的Google应用程序引擎文件夹。。。
    from google.appengine.api import memcache
    # work-around for Eclipse+PyDev+GAE memcache error
    if not hasattr(memcache, 'set'):
        Client=None
        memcache.setup_client(Client)
        memcache = Client