2015-04-04 129 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 

事情是我一直在開發的開發者服務器上的Web應用程序這和它一直工作就像一個魅力,我甚至清除了數據存儲並嘗試在幾臺電腦上運行,但它仍然在運行,但是當我嘗試在Google服務器上測試它時,我發現這個錯誤。

我沒有在app.yaml文件中定義任何引用,因爲我認爲它不是必需的,因爲它不是依賴於google python API的庫,我錯了嗎? 有誰知道問題是什麼?

非常感謝:)

回答

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 2015-04-04 18:20:04

+0

我的榮幸。當我開始時,那個人也絆倒了我。乾杯! – humanbeing 2015-04-04 21:43:12