はじめに
Python言語のフレームワークFlaskを使って、WEBアプリの “Hello World!” を動作させるまでの手順を説明します。Windowsの場合はWSLでWEBアプリを動作させ、同じパソコン上のWEBブラウザで localhost を参照して動作を確認します。
Python実行環境の準備
PythonはWEBアプリの開発だけでなく、ライブラリを使ってデータ解析やディープラーニングなど様々な用途に使われます。その際にライブラリ間のバージョンの齟齬によって動作に不具合が出ることがあるため、開発プロジェクトの動作環境を仮想化するためのツールが多数存在します。ここでは virtualenv を使用します。
- Pythonのバージョンを確認
Python2 が入っていればそのバージョンが表示される。処理系によっては Python2 がインストールされておらず、Python3 のバージョンが表示される場合もあります。
1 |
$ python -V |
Python3 のバージョンを表示。
1 |
$ python3 -V |
WSLでUbuntuをインストールした場合、Macのターミナルを使っている場合は、Python3が既にインストールされていますので、”3″で始まるバージョンが表示されるはずです。ここではPython 3.8.5がインストールされている前提で手順を説明します。
その他の環境ではコマンドpython(“3″なし)がPython3に関係付けられていたり、インストールされているPython3のバージョンが古かったりする場合もあります。
- pip3とgitをインストール
pip3とgitがインストールているか確認してください。
1 2 |
$ pip3 $ git |
それぞれHelpが表示されれば既にインストールされています。Helpが表示されなければインストールしてください。Windows(WSL)でのインストールコマンドです。gitについてはここも参照してください。
1 2 |
$ sudo apt install python3-pip $ sudo apt install git |
Macにpip3をインストールするコマンドは次のとおりです。
1 2 |
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py $ python3 get-pip.py |
- virtualenvをインストール
1 |
sudo pip3 install virtualenv |
あとで使いますので、virtualenvの使い方をまとめておきます。作業ディレクトリでコマンドを実行してください。
virtualenv –version | バージョンの確認 |
virtualenv [作成する環境名] | 仮想環境の作成 |
source [環境名]/bin/activate | 仮想環境の有効化 |
deactivate | 仮想環境の無効化 |
Python/Flaskで”Hello World!”
- 作業ディレクトリを作る
C:\app がFlaskのアプリを開発する作業フォルダで、WSLのホームディレクトリにシンボリックリンクされていると仮定します。つまり、WSL内の ~/app/ に C:\app が見えます。その下にアプリ名「myproject」でフォルダを作ります。異なるフォルダー構成・名前にする場合は以降の説明を読み替えてください。Macの場合も同様に、ホームディレクトリに app という名前でフォルダーを作ってください。
1 2 |
C:\app (WSLからは ~/app/) +-- myproject (WSLからは ~/app/myproject/) |
異なるフォルダー構成・名前にする場合は以降の説明を読み替えてください。
この説明では「myproject」という名前にしましたが、最終的にHerokuにデプロイすることを計画している場合は、アプリの名前をユニークな名称にしておいてください。「myproject」のままではHerokuで名前が重複しているとしてアプリが作れません。
myprojectのフォルダはWindowsで作っても構いませんが、WSL内で作る場合はこのようにします。
1 2 |
cd ~/app mkdir myproject |
- virtualenvで仮想環境を作る
さらに続けて、myprojectの内部でPythonの仮想環境を作ります。仮想環境の名前をmyprojectenvとします。virtualenvコマンドはmyprojectの中で実行してください。
1 2 3 |
cd ~/app/myproject (作業ディレクトリに移る) virtualenv myprojectenv source myprojectenv/bin/activate |
成功したらコマンドプロンプトの先頭に (myprojectenv) と表示され、仮想環境の中であることが示されます。
- Flaskのアプリをコーディングする
myprojectの中でFlaskの “Hello World!” アプリをコーディングします。ファイル名は myproject.py、内容は下のとおりです。WSLの中でviエディタを使っても、Windowsの世界でファイル編集してもかまいません。Windowsでテキストエディタを使用する場合はエンコーディングがUTF-8であることを確認してください。
1 2 3 4 5 6 7 8 9 10 11 |
# coding: utf-8 from flask import Flask app = Flask(__name__) @app.route('/') def main(): return 'Hello world!' if __name__ == '__main__': app.run(debug=True, host='0.0.0.0') |
Flaskはデフォルトではポート番号=5000番で動作しますが、最後の行で指定することもできます。
1 |
app.run(debug=True, host="0.0.0.0", port="8000") |
- MacOS の Monterey の場合
MacでMontereyを使っている場合、Montereyが5000番ポートを使ってしまっているので、”OSError: [Errno 48] Address already in use” といエラーが発生します。5000番以外のポート番号を指定してください。
- 必要なライブラリをインストールする
コマンドプロンプトの前に (myprojectenv) が表示されて仮想環境の中であることを確認します。間違えるとWSL本体の環境にインストールされてしまいます。Hello World! を動かすにはFlaskが必要なのでインストールします。
1 |
pip3 install flask |
もっと高度なアプリを作る時には、いろいろなライブラリが必要になります。そのようなライブラリもここでインストールしてください。Herokuにデプロイする予定であればgunicornもインストールしておいてください。WSLでは不要ですが、requirements.txt の中に自動的に現れるようにするためです。
1 |
pip3 install gunicorn |
そのアプリ用を動作させるための requirements.txt が供給されている場合は、次のコマンドで必要なライブラリが一括でインストールされます。requirements.txt については後で説明します。
1 |
pip3 install -r requirements.txt |
- アプリを起動する
1 |
python3 myproject.py |
- ブラウザで動作を確認する
http://localhost:5000 にアクセスして Hello World! と表示されたら成功です。
More…
Hello World! をベースに更に高度なアプリ開発にチャレンジしてください。ディレクトリ構成は例えば下のようになります。「myproject」等の名前は適宜変更してください。
1 2 3 4 5 |
~/app/myproject (作業ディレクトリ) +-- myprojectenv (virtualenvの環境が格納される) +-- myproject.py (Python言語によるFlaskのソースコード) +-- templates (この名前は常に "templates") +-- index.html (templatesの下にHTMLのテンプレートを配置) |
アプリの内容に応じて必要なライブラリをインストールすることになりますが、必ずvirtualenvの仮想環境の中でpip3を使ってインストールしてください。そうすることで他のアプリに悪影響が生じることを回避できます。
pip3コマンドで、現在の仮想環境にインストールされているライブラリの一覧を表示することができます。
1 |
pip3 freeze |
その結果をファイルに保存します。ファイル名は requirements.txt とするのが慣例です。
1 |
pip3 freeze > requirements.txt |
開発したアプリをサーバーにデプロイしたり、同種の別のアプリを開発するとき等など、同じ環境を作ることができます。
1 |
pip3 install -r requirements.txt |
コメント