Eclipse+PyDev+GAE memcache error
Question: I've started using Eclipe+PyDev as an environment for developing my first app
for Google App Engine. Eclipse is configured according to [this
tutorial](http://code.google.com/appengine/articles/eclipse.html).

Everything was working until I start to use memcache. PyDev reports the errors
and I don't know how to fix it:

![alt text](http://www.freeimagehosting.net/uploads/fc176c0957.png)

Error: Undefined variable from import: get

How to fix this? Sure, it is only PyDev checker problem. Code is correct and
run on GAE.

UPDATE:

  1. I'm using PyDev 1.5.0 but experienced the same with 1.4.8.
  2. My PYTHONPATH includes (set in 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`

UPDATE 2:

I took a look at `C:\Program
Files\Google\google_appengine\google\appengine\api\memcache\__init__.py` and
found `get()` is not declared as `memcache` module function. They use the
following trick to do that (I didn't hear about such possibility):

    
    
    _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... Any idea how to force PyDev to recognize that?


Answer: There is a cleaner solution: Try adding GAE's memcache to your forced
builtins.

In your PyDev->Interpreter-Python->ForcedBuiltins window, add the
"google.appengine.api.memcache" entry and apply.

Double-click on the memcache errors to check them back, they disappear!

Please make sure that system pythonpath includes google APE install directory.

