PythonのFlaskを最初から構築する機会があったので、環境構築のメモを残しておく。
pyenvを使ったPythonのインストールなどは以下で行なっていたので、最初にそれをやっていない人は以下をまずは行う。
Python 環境構築 mac windows
virtualenvのインストール
上記が終わったらvirtualenv
をインストール。
※Virtualenvとは
Virtualenvは、Shell上でプロジェクト毎に個別の環境が構築出来るナイスなツールです。
pip install virtualenv
上記で動かない人はpip3
で実行してみてください。自分はエイリアス設定をしているのでpip
で動きます。
alias pip=pip3
flaskアプリケーションを作成する
適当なワーキングディレクトリに移動してから環境を作る。
コマンドはvirtualenv {app_name}
cd /Work/flask_app/
$ virtualenv testapp
Using base prefix '/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7'
New python executable in /Work/flask_app/testapp/bin/python3.7
Also creating executable in /Users/yoshi/Work/sample_python/testapp/bin/python
Installing setuptools, pip, wheel...
done.
完了すると以下のように指定した{app_name}
でディレクトリ(プロジェクト?)が作成される。
$ ll
total 0
drwxr-xr-x 6 ys staff 192 1 16 11:02 testapp/
中身はこんな感じ
$ ll testapp/
total 0
drwxr-xr-x 6 ys staff 192 1 16 11:02 ./
drwxr-xr-x 4 ys staff 128 1 16 11:02 ../
lrwxr-xr-x 1 ys staff 80 1 16 11:02 .Python@ -> /usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/Python
drwxr-xr-x 18 ys staff 576 1 16 11:02 bin/
drwxr-xr-x 3 ys staff 96 1 16 11:02 include/
drwxr-xr-x 3 ys staff 96 1 16 11:02 lib/
この環境を使用するようにアクティブ化する必要があります。OS XとLinuxでは以下のコマンドを実行。
$ cd testapp
$ . bin/activate
# 上記で動かなかったら
$ source bin/activate
(testapp) adminnoMacBook-Pro-4:testapp ys$
うまく起動できると({app_name}
)とターミナル上に出現して実行可能な状態になる。
Flaskのインストール
$ pip install Flask
Collecting Flask
Downloading https://files.pythonhosted.org/packages/9b/93/628509b8d5dc749656a9641f4caf13540e2cdec85276964ff8f43bbb1d3b/Flask-1.1.1-py2.py3-none-any.whl (94kB)
|████████████████████████████████| 102kB 1.8MB/s
Collecting Werkzeug>=0.15
Downloading https://files.pythonhosted.org/packages/ce/42/3aeda98f96e85fd26180534d36570e4d18108d62ae36f87694b476b83d6f/Werkzeug-0.16.0-py2.py3-none-any.whl (327kB)
|████████████████████████████████| 327kB 1.9MB/s
Collecting itsdangerous>=0.24
Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
Collecting click>=5.1
Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)
|████████████████████████████████| 81kB 2.4MB/s
Collecting Jinja2>=2.10.1
Downloading https://files.pythonhosted.org/packages/65/e0/eb35e762802015cab1ccee04e8a277b03f1d8e53da3ec3106882ec42558b/Jinja2-2.10.3-py2.py3-none-any.whl (125kB)
|████████████████████████████████| 133kB 3.4MB/s
Collecting MarkupSafe>=0.23
Downloading https://files.pythonhosted.org/packages/ce/c6/f000f1af136ef74e4a95e33785921c73595c5390403f102e9b231b065b7a/MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl
Installing collected packages: Werkzeug, itsdangerous, click, MarkupSafe, Jinja2, Flask
Successfully installed Flask-1.1.1 Jinja2-2.10.3 MarkupSafe-1.1.1 Werkzeug-0.16.0 click-7.0 itsdangerous-1.1.0
無事に完了したか確認。
$ flask --version
Python 3.7.6
Flask 1.1.1
Werkzeug 0.16.0
Flask上で動作確認をしてみる
公式ドキュメントからサンプルプログラムを拝借。
クイックスタート¶
サンプルのPythonファイルは{app_name}の直下で大丈夫。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "Hello Flask"
if __name__ == '__main__':
app.run()
python sample_flask.py
動くかな....
動いた!
$ python sample_flask.py
* Serving Flask app "test_flask" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [16/Jan/2020 11:33:03] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [16/Jan/2020 11:33:03] "GET /favicon.ico HTTP/1.1" 404 -
ちゃんとTOPページへのアクセスが200
になっている。ブラウザで確認してみてもちゃんと表示された。
ただ、なぜかコンソールをみると* Environment: production
をみている。開発環境なんだからこのまま本番用に使うなよって以下のように警告が出ています。(現状は問題ないけど
WARNING: This is a development server. Do not use it in a production deployment.
気になる人は以下のコマンドを実行。
$ export FLASK_APP=app_name
$ export FLASK_ENV=development
(testapp) ys $ flask run
おわり。