2012-05-07 2 views
-1

После проблем с простым импортом httplib2 (см. Мой пост here), я встречаю другую проблему с импортом gflags.google-app-engine: импорт работает только после обновления

На самом деле, на сервере dev у меня есть ImportError, когда я впервые помещаю приложения. Но, если я обновляю браузер, приложения работают! Если я ищу в журналах, я могу увидеть:

... 
ImportError: No module named gflags 
[App Instance] [0] [dev_appserver.py:2891] INFO "GET/HTTP/1.1" 500 - 
[App Instance] [0] [py_zipimport.py:148] INFO zipimporter('/usr/lib/python2.5/site-packages/setuptools-0.6c11-py2.5.egg', '') 
[App Instance] [0] [py_zipimport.py:148] INFO zipimporter('/usr/lib/python2.5/site-packages/python_gflags-2.0-py2.5.egg', '') 

Таким образом, приложение работает после обновления на сервере Dev, но он не работает на всех после загрузки на appspot:

<type 'exceptions.ImportError'>: No module named gflags 
Traceback (most recent call last): 
    File "/base/data/home/apps/s~yoyocontacts/2.358733066847060730/main.py", line 33, in <module> 
from apiclient.discovery import build 
    File "/base/data/home/apps/s~yoyocontacts/2.358733066847060730/apiclient/discovery.py", line 48, in <module> 
from apiclient.http import HttpRequest 
    File "/base/data/home/apps/s~yoyocontacts/2.358733066847060730/apiclient/http.py", line 47, in <module> 
from model import JsonModel 
    File "/base/data/home/apps/s~yoyocontacts/2.358733066847060730/apiclient/model.py", line 27, in <module> 
import gflags 

Моих Приложение это HelloWorld:

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 169 2012-05-06 16:19 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 -> /home/yoyo/dev/outils/google_appengine/lib/python-gflags/ 
-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* 
-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 

Мои вопросы:

  • Почему zipimporter работает только после обновления?
  • Как исправить эту ошибку на appspot?
+1

Нет __init__.py in/google_appengine/lib/python-gflags /. Попробуйте: import gflags.gflags – greg

ответ

2

Thans @greg.

Я добавил __init__.py с import gflags затем я изменил apiclient/model.py с from gflags import gflags вместо просто import gflags.

+0

Я также получил эту ошибку, когда попытаюсь использовать бэкэнд базы данных cloudql. Проблема заключалась в том, что я не создал маркер oauth, как только я создал, что он ушел. – Naddiseo

+0

Благодарим вас за ответ. Мне не нужно было создавать какой-либо __init__.py, потому что я запускаю простой скрипт python в командной строке Поэтому я просто изменяю «импорт gflags» на «from gflags import gflags» Простой, но он работает, спасибо за ваш совет – Etienne