Flaskをローカル環境で試す場合、直接インストールするよりも仮想環境を構築してその中で試す方がバージョンなどの問題を防ぐことができます。
まずは仮想環境作りから行います。
virtualenv環境作成
Pythonの仮想環境を作るには、様々な方法があります。
Anacondaを使ったconda、サードパーティ製のvirtualenv、pythonに標準搭載された仮想環境のプログラムvenvなどがあります。
今回の仮想環境にvirtualenvを使います。virtualenvはpipでのインストールが必要ですが、環境構築が比較的簡単なメリットがあります。
virtualenvが既にインストールされているか確認するには次のコマンドを使います。
virtualenv --version
virtualenvのインストール
バージョン確認してまだインストールされてなければ次の手順でインストールします。
既にインストールしていたら、次の「今回の作成アプリの環境設定」に進みます。
virtualenvのインストールする pipコマンドを使います。
sudo pip install virtualenv
今回作成アプリの環境設定
今回の解説ではとりあえず「Hello World!」を表示して終わりですが、
この環境を活用して、そのまま画像判定アプリを作成します。
画像の判定にはvgg16を活用しますので、ここでの環境名をflask_vggとします。
flask_vggという環境を作るには、以下のコマンドを実行します。
virtualenv flask_vgg
作成した環境 flask_vgg に入るには cd コマンドで移動した後にアクティベートします。
cd flask_vgg
アクティベートのコマンドは環境に応じて変わります。自分の仮想環境をよく確認しておきましょう。
アクティベートするには、activate コマンドで行えます。
ただし、MACの場合は、source activateとする必要があります。
また、次のようにコマンドを入力する必要がある場合もあります。
source bin/activate
つまり、`virtualenv`で作成したフォルダ内にbinフォルダが作成されます。binフォルダ内にactivateファイルがあるのでそれを実行すれば良いのです。必要に応じてパスをつけてコマンドを入力します。
現在の仮想環境から通常の環境に戻るコマンドは次のようになります。
こちらはシンプルにこれで動きます。
deactivate
アプリケーションの初期設定
Flaskのインストールはpipコマンドで実施します。
pip install Flask
Flaskバージョン確認
Flaskのバージョン確認は次のようにPythonのインタラクティブモードから確認します。
$ python >> import flask >> flask.__version__
表示
‘1.1.1’
のようにバージョンが確認できます。
今回のFlaskバージョンは 1.1.1 での例です。
画像推定のためにtensorflowの導入
画像を推定するアプリケーションを作成するには学習したモデルから推測を行うためにtesorflowやkerasなどの導入が必要です。
tensorflowインストール
tensorflowはpipコマンドでインストールします。
pip install tensorflow
kerasインストール
kerasもpipコマンドでインストールします。
import keras
pillowインストール
画像表示などで必要なpillowもpipでインストールします。
pip install pillow
matplotlibインストール
画像表示やグラフ作成のためのmatplotlibもpipでインストールします。
pip install matplotlib
Flaskドキュメントは一度確認しておくと良いです。
Hello Woeld表示のためのプログラム作成
簡単にHello World!を表示するには次のようにFlask用のプログラムを用意します。
ファイル名は hello.py としてflask_vggフォルダに保存します。
hello.pyでは、Flaskクラスを 「app = Flask(__name__)」 でインスタンス化しています。
インスタンス化したappにはFlaskクラスが持つroute()メソッドがあります。
ところで、引数の`__name__` というのは、自動的に定義される変数で、現在のファイルのモジュール名が入ります。
つまりここでは「app= Flask(‘hello’)」と同じということになります。
また、ファイルをスクリプトとして直接実行した場合、 `__name__` は `__main__` になります。
このメソッドの引数にパスを指定することで各ページの指定ができます。
また、この処理にデコレート機能を使って関数を定義すると、指定したアドレスでの振る舞いを定義できます。
また、route()メソッドのキーワード引数として methods に値を指定することで、GETとPOSTのHTTPメソッドを指定できます。
methods を指定しない場合、GETリクエストのみルーティングされます。
hello.py
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' <h3>サーバー起動</h3> これでサーバーを起動してhello.pyの内容を表示することができます。 まずはexportを行います。 export FLASK_APP=hello.py
続いてサーバーを起動します。
flask run
「Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)」と表示されますので、このURLでブラウザを開きます。
サーバーを止めるには、表示に記述されている通り、CTRL+C です。