2015-04-04 2 views
0

Привет всем Я борюсь с AppEngine, я сделал мой webapp на сервере разработки, все работало нормально, но раз я его развертываю, он дает мне ImportError. Мой главный каталог выглядит следующим образом:GAE/Python ImportError только на развернутой версии

-/ 
    -Several 
    -Folders 
    -... 
    *admin.py 
    *app.yaml 
    *db_objects.py 
    *index.yaml 
    *img_getter.py 
    *keys.py 
    *main.py 
    *main_handler.py 

Мой app.yaml файл:

application: myapplication (this is not the real name) 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: yes 

default_expiration: "7d" 

handlers: 
- url: /favicon\.ico 
    static_files: favicon.ico 
    upload: favicon\.ico 

- url: /css 
    static_dir: css 

- url: /img 
    static_dir: img 

- url: /images 
    static_dir: images 

- url: /js 
    static_dir: js 

- url: /admin.* 
    script: admin.app 
    login: admin 

- url: /checkout.* 
    script: main.app 
    login: required 

- url: /confirm.* 
    script: main.app 
    login: required 

- url: /changeinfo.* 
    script: main.app 
    login: required 

- url: .* 
    script: main.app 

libraries: 
- name: webapp2 
    version: "2.5.2" 
- name: jinja2 
    version: latest 

Когда я иду в myaddress.appengine.com/admin это дает мне эту ошибку:

Traceback (most recent call last): 
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle 
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) 
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler 
handler, path, err = LoadObject(self._handler) 
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 85, in LoadObject 
obj = __import__(path[0]) 
File "/base/data/home/apps/s~myapplication/1.383371027775991819/admin.py", line 7, in <module> 
    import img_getter 
ImportError: No module named img_getter 

Это начало admin.py:

#coding=utf-8 

import webapp2 
from main_handler import Handler 
import db_objects 
from google.appengine.ext import db 
import img_getter 
from google.appengine.api import memcache 
import keys 

from datetime import date 

class MainHandler(Handler): 
    def get(self): 
     self.redirect("/admin/noticias") 
... 

И это начало файла img_getter.py:

import gdata.photos.service 
import gdata.media 
import gdata.geo 

def foo(variable): 
    ... 

def bar(variable): 
    ... 
#functions to get images from the google picassa service 

Вещь я разработке этого веб-приложение на сервере разработчика и он работает как шарм, я даже очистила хранилищу и попробовал на нескольких компьютерах, и он все еще работает, но когда я пытаюсь проверить его на серверах Google, я нахожу эту ошибку.

Я не определяю никаких ссылок на файл app.yaml, поскольку я думаю, что это необязательно, потому что это не библиотека, зависящая от API-интерфейса google python, не так ли? Кто-нибудь знает, в чем проблема?

Спасибо большое :)

ответ

1

Возможно, вам потребуется импортировать его в виде пакета.

https://docs.python.org/2/tutorial/modules.html#packages

  1. Создайте папку под названием «тест» (или что вы хотите) для img_getter.py и положил его там

  2. Добавить файл с именем __init__.py и сохранить его в папке вы положили IMG получения. Этот файл может быть пустым

  3. вызова импорта в импорте test.img_getter

Ссылка How to import python script files in folders on Google App Engine?

Приветствия и удачи!

+0

Большое вам спасибо, он отлично работал. Я работаю с python и appengine в течение нескольких месяцев, и я не знал об этом. Еще раз спасибо:) – user3441860

+0

Мое удовольствие. Когда я тоже начал тренироваться, это подтолкнуло меня. Ура! – humanbeing