Ошибка инициализации модуля на сервере appengine dev во время выполнения Python

Я создаю новое приложение Python Appengine с 2 модулями (2 yamls). По умолчанию yaml - app.yaml с корневым каталогом моего проекта. Второй файл yaml module1.yaml, который находится в каталоге module1. У меня есть следующая конфигурация в module1.yaml

application: appID
module: module1
version: default
runtime: python27
api_version: 1
threadsafe: true

instance_class: F1
automatic_scaling:
  min_idle_instances: automatic
  max_idle_instances: automatic
  min_pending_latency: 500ms
  max_pending_latency: 1000ms
  max_concurrent_requests: 50

handlers:
- url: .*
  script: module1.app

libraries:
- name: webapp2
  version: latest
- name: MySQLdb
  version: latest
- name: ssl
  version: latest

inbound_services:
- warmup
- xmpp_message
- xmpp_presence
- xmpp_subscribe
- xmpp_error

В том же каталоге module1 у меня есть файл module1.app, который имеет следующий код

#!/usr/bin/env python

import sys
import webapp2

# Module Imports
import routes

# Define app
module1_app = webapp2.WSGIApplication(debug = True)

# Add to path
if 'libs' not in sys.path:
    sys.path[0:0] = ['libs']

# Add defined routes
routes.add_routes(module1_app)

В том же каталоге module1 у меня есть route.py, который содержит конфигурацию маршрутизации.

Когда я запускаю сервер dev, используя следующую команду

python dev_appserver.py app.yaml module1/module1.yamlЯ получаю следующий вывод:

INFO     2015-03-18 15:56:05,149 api_server.py:172] Starting API server at: http://localhost:38640
INFO     2015-03-18 15:56:05,159 dispatcher.py:185] Starting module "default" running at: http://localhost:8080
INFO     2015-03-18 15:56:05,164 dispatcher.py:185] Starting module "module1" running at: http://localhost:8081
INFO     2015-03-18 15:56:05,167 admin_server.py:118] Starting admin server at: http://localhost:8000
ERROR    2015-03-18 15:56:06,493 wsgi.py:263] 
Traceback (most recent call last):
  File "/home/user1/servers/gae/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/home/user1/servers/gae/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/home/user1/servers/gae/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
ImportError: No module named module1
INFO     2015-03-18 15:56:06,510 module.py:709] comm: "GET /_ah/warmup HTTP/1.1" 500 -

Может кто-нибудь объяснить мне эту ошибку? Что я могу сделать, чтобы это исправить?

1 ответ

Решение

Каталог module1 не в sys.path - добавить в него пустое __init__.py составить пакет и изменить

script: module1.app

чтобы:

script: module1.module1.module1_app

Примечание. Я также изменил имя объекта приложения WSGI, чтобы оно отражало действительное имя, которое вы выбрали для данного назначения.

module1_app = webapp2.WSGIApplication(debug = True)

Это делает слишком много повторений "module1", но, эй, это имена, которые вы выбрали для использования!-)

Другие вопросы по тегам