2015-07-12 50 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)