Flaskでよく発生するエラーの解決方法[Python]

今日はPythonのウェブアプリケーションフレームワークであるFlaskを使用しているとよく発生する問題の解説とその解決方法について紹介します

No module named 'flask.ext’

古いバージョンで作成されたソースを持ってきたりすると発生するエラーです
昔は派生機能が"flask.ext"内に実装されていたが、
現在では"flask_名前"で別に実装されているため"flask.ext.~”をインポートすると"
flask.ext “が見つかりません

対策

flask.ext.~をflask_~に変更します
例えば
flask.ext.script→flask_scrip

outside of application context

アプリケーションコンテキストの外部でcurrent_app 、またはそれを使用するものにアクセスしようとすると発生するエラーです

Flaskはリクエストを事前にいくつかの変数を設定することで以下の2点の問題を管理します

  1. 現在のFlaskアプリオブジェクトを含むグローバル変数にコードがアクセスできる必要がある
  2. 単一のプロセスに複数のアプリケーションが存在する可能性がある

しかし、テスト時はコードが正しいグローバル変数を見つけるられるように、アプリケーションコンテキストを自分で設定する必要があります

対策

Flaskの後にwithでapp_context を設定します

 def create_app ():
    app = Flask ( __name__ )

    with app . app_context ():
        init_db ()

    return app