簡體   English   中英

google-app-engine:google api python客戶端hello world中的ImportError httplib2

[英]google-app-engine : ImportError httplib2 in google api python client hello world

我剛剛下載了適用於python的Google App Engine SDK(google_appengine_1.6.5.zip),然后嘗試從google-api-python-client( appengine )啟動示例:

$ tree
.
|-- app.yaml
|-- client_secrets.json
|-- grant.html
|-- index.yaml
|-- main.py
`-- welcome.html

我啟動開發服務器:: ./dev_appserver.py /home/yoyo/dev/projets/yoyocontacts/ --backends --clear_datastore --high_replication

但是,當我在瀏覽器中啟動應用程序時,出現以下錯誤: ImportError: No module named httplib2

我的平台是帶有Python 2.6.5的Ubuntu 10.04.4 LTS,並且帶有Python cli的httplib2導入都可以正常工作。 google-appengine目錄中有httplib2:

$ locate httplib2|grep appengine

/home/yoyo/dev/outils/google_appengine/lib/httplib2
/home/yoyo/dev/outils/google_appengine/lib/httplib2/httplib2
/home/yoyo/dev/outils/google_appengine/lib/httplib2/httplib2/LICENSE
/home/yoyo/dev/outils/google_appengine/lib/httplib2/httplib2/OWNERS
/home/yoyo/dev/outils/google_appengine/lib/httplib2/httplib2/__init__.py
... 

如何正確解決此導入問題?

我知道我可以在應用程序目錄中添加httplib2,但它並不優雅:

$tree
...
|-- httplib2
|   |-- cacerts.txt
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- iri2uri.py
|   |-- iri2uri.pyc
|   |-- socks.py
|   |-- socks.pyc 

我終於添加了正確的符號鏈接:(感謝@Thanasis)

$ll
total 36K
lrwxrwxrwx 1 yoyo   77 2012-05-06 16:24 apiclient -> /home/yoyo/dev/outils/google_appengine/lib/google-api-python-client/apiclient/
-rw-r--r-- 1 yoyo  267 2012-05-07 12:28 app.yaml
-rw-r--r-- 1 yoyo  358 2012-05-06 15:20 client_secrets.json
lrwxrwxrwx 1 yoyo   60 2012-05-07 12:12 gflags -> /usr/lib/python2.5/site-packages/python_gflags-2.0-py2.5.egg
-rw-r--r-- 1 yoyo  554 2012-03-02 20:00 grant.html
lrwxrwxrwx 1 yoyo   60 2012-05-06 16:20 httplib2 -> /home/yoyo/dev/outils/google_appengine/lib/httplib2/httplib2/
-rw-r--r-- 1 yoyo  471 2012-03-02 20:00 index.yaml
-rw-r--r-- 1 yoyo 3,4K 2012-05-07 11:45 main.py
lrwxrwxrwx 1 yoyo   56 2012-05-06 16:24 oauth2 -> /home/yoyo/dev/outils/google_appengine/lib/oauth2/oauth2/
lrwxrwxrwx 1 yoyo   80 2012-05-07 10:59 oauth2client -> /home/yoyo/dev/outils/google_appengine/lib/google-api-python-client/oauth2client/
-rwxr-xr-x 1 yoyo  163 2012-05-07 11:14 run*
drwxr-xr-x 3 yoyo 4,0K 2012-05-07 12:27 static/
-rwxr-xr-x 1 yoyo  115 2012-05-07 11:50 upload*
lrwxrwxrwx 1 yoyo   79 2012-05-06 16:24 uritemplate -> /home/yoyo/dev/outils/google_appengine/lib/google-api-python-client/uritemplate/
-rw-r--r-- 1 yoyo  102 2012-03-02 20:00 welcome.html

現在,我不得不用gflags處理一個新問題。

這是一個解決方案。

  • 在源樹之外的某個地方創建一個臨時目錄。
  • cd到目錄並解壓縮/usr/lib/python2.5/site-packages/python_gflags-2.0-py2.5.egg
  • 將* .py復制到源目錄。

大多數第三方庫都需要包含在您的項目中。 最簡單的方法(從App Engine文檔中改編而成)是:

在您的項目目錄(帶有app.yaml目錄)中:

$ mkdir lib
$ pip install -t lib/ httplib2

然后在同一目錄中創建一個名為appengine_config.py的新文件:

# appengine_config.py
vendor.add('lib')

如果您有多個第三方依賴項,但是它們的名稱在requirements.txt中,然后使用

pip install -t lib/ -r requirements.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM