flask プロジェクトの PyCharm 実行でハマった

PyCharm で flask プロジェクトを作って,PyCharm 上で実行したら,スクリプトで指定している設定が反映されなくて困った.

.

経緯

flask プロジェクトを作成

PyCharm で flask プロジェクトを作った.

pleiades.io

スクリプトを編集

app.py のメイン内で debughost の設定をいじった.

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run(debug=True, host="0.0.0.0")

実行 & 問題発生

PyCharm で app.py を実行した.

FLASK_APP = app.py
FLASK_ENV = development
FLASK_DEBUG = 0
In folder /Users/nomotoeriko/PycharmProjects/untitled
/Users/nomotoeriko/.pyenv/versions/3.5.0/bin/python -m flask run
 * Serving Flask app "app.py"
 * Environment: development
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

明らかに host="0.0.0.0" が反映されていないことがわかる.

.

真相

どうやら app.py を直接実行しているわけではないらしく,メインが呼ばれていなかった.開発環境とかその辺のアレで PyCharm がよしなにやってくれているのかなぁ.知らんけど.

.

対処

真面目な対処法

公式によれば,

Flaskサーバーの実行/デバッグ設定の対応するパラメータを編集することにより、Flask固有の変数を変更することができます。

とのこと.以下のページから,flask run のパラメータに --host があること,Flask デバッグモードの有効化には FLASK_DEBUG にチェックをつければ良いことがわかる.

pleiades.io

ということで,Edit Configurations から設定をいじる. f:id:ensyu3-141592653589793238:20190515002358p:plain

Additional options からホストを設定.FLASK_DEBUG にチェック.

動く ✌︎('ω'✌︎)

FLASK_APP = app.py
FLASK_ENV = development
FLASK_DEBUG = 1
In folder /Users/nomotoeriko/PycharmProjects/untitled
/Users/nomotoeriko/.pyenv/versions/3.5.0/bin/python -m flask run --host 0.0.0.0
 * Serving Flask app "app.py" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 285-077-691

雑な対処法

PyCharm の Terminal から app.py を叩く.

あとがき

思わぬ落とし穴だった.まぁ公式をよく読みましょうってことですね.でも Hello World までを自動生成してくれるのはさすが JetBrains という感じ.便利.

一緒に原因を考えてくれた I 氏と執筆にご協力してくれた T 氏に深く感謝いたします.