2015-07-12 30 views
1

我使用remote_api_stub关注Google的文档hereremote_api_stub的路径问题

我进入一个Python外壳下面两行:

sys.path.insert(0, "/Users/joneill/google-cloud-sdk/platform/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine") 
from google.appengine.ext.remote_api import remote_api_stub 

,然后我得到的错误:

>>> from google.appengine.ext.remote_api import remote_api_stub                    Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Users/joneill/google-cloud-sdk/platform/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 76, in <module> 
    import yaml 
ImportError: No module named yaml 

我可以再添加路径YAML是这样的:

sys.path.insert(0, "/Users/joneill/google-cloud-sdk/platform/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/yaml/lib") 

但后来我得到另一个导入错误:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Users/joneill/google-cloud-sdk/platform/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 95, in <module> 
    from google.appengine.tools import appengine_rpc 
    File "/Users/joneill/google-cloud-sdk/platform/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/appengine_rpc.py", line 25, in <module> 
    import fancy_urllib 
ImportError: No module named fancy_urllib 

有没有一种简单的方法来获得我需要的所有东西?

回答

3

没有。这是GAE(它本身就是Google最不喜欢的角落之一)更不受欢迎的角落之一。幸运的是,fancy_urllib是您需要手动添加到路径中的唯一其他事情。

我还想在尝试导入remote_api_stub之前确保google位于PATH之前。您的阅读正确 - Google有两种不同的软件包,可以在路径中存在google

这里是我的模块init_remote_api的重要组成部分,它处理建立remote_api的所有怪事:

if 'google' in sys.modules: 
    del sys.modules['google'] 

sys.path.append(GAE_PATH) 
sys.path.append(os.path.join(GAE_PATH, 'lib', 'yaml', 'lib')) 
sys.path.append(os.path.join(GAE_PATH, 'lib', 'fancy_urllib')) 

from google.appengine.ext.remote_api import remote_api_stub 

def auth_func(): 
    return (GAE_USERNAME, GAE_PASSWORD) 

remote_api_stub.ConfigureRemoteApi(None, '/_ah/remote_api', auth_func, 
            APP_DOMAIN)