2017-06-27 9 views
0

は私のapp.yamlをGAEフラスコ:はImportError:いいえモジュールという名前のアプリここ

handlers: 
- url: /email/.* 
    script: email.app 

- url: .* # This regex directs all routes to main.app 
    script: main.app 
... 

私email.py

# -*- coding: utf-8 -*- 
from flask import Flask, request 
from google.appengine.api import mail 
import urllib, urllib2, json, datetime, time, converttime, variables, jinja2 
from variables import * 
app = Flask(__name__) 
jinja_environment = jinja2.Environment(autoescape=True, 
    loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'templates'))) 
@app.route('/placement_report') 

リンク私の構造

NotificationSys 
app.yaml 
main.py 
email.py 
... 

で、ここにあります罰金の主な仕事の下で、私は/電子メール/何かを要求するとき このエラーは ImportEr与えられますror:名前のないアプリケーション

+0

少なくとも、あなたの電子メールモジュールに 'app'の定義を表示する必要があります。 [問題を再現するための最小限のコード](https://stackoverflow.com/help/mcve)を提供する必要があります。 – snakecharmerb

+0

@snakecharmerb 'app = Flask(__ name __)' –

+0

電子メールファイルに 'app = Flask(__ name __)'はありますか? –

答えて

0

ハンドラemail.appの名前をemailer.appに変更し、ファイル名をemailer.pyに変更してすべて正常に機能しました。ほとんどの場合、ある種のライブラリ名email.pyのファイルと競合していた可能性があります。

0
  1. 1つのファイルには、appオブジェクトが1つだけ必要です。各ファイルに新しいFlaskアプリケーションオブジェクトを作成しているのであれば間違いです。一度定義してインポートしてください。

  2. 最も可能性の高い問題は、email.pyが使用しているライブラリと競合していることです。そのファイルの名前を変更します。

+0

ええ、2が問題でした。 1の背後にある理由を教えてもらえますか? https://cloud.google.com/appengine/docs/standard/python/config/appref#handlers_element 例には2つのアプリがあります。 'ハンドラ: - URL:user_profile.app ログイン: スクリプト/profile/.* を必要 - URL:/admin/.* スクリプト:admin.app ログイン:管理者 - URL:/。 * スクリプト:welcome.app' –

+0

私は明確にしていると思います:あなたが指し示しているApp EngineのドキュメントはFlask特有のものではなく、むしろWSGIの場合のように見えます。技術的には、同じWebサーバー上で複数のアプリケーションを実行することができます。分離や区画化が必要な場合は、賢明かもしれません。しかし、経験則として、それはFlaskのプログラマが何をしているのではない。 –

+0

各Flaskアプリには、設定データ、テンプレート、ルーティングリクエストのルールなどがあります。 2つのFlaskアプリがある場合は、そのすべてが2回あります。おそらく重複しています。それは望ましいかもしれないいくつかのコーナーケースがありますが、私はそれが一般的だとは思わない。 –

関連する問題