FlaskでHello World!

はじめに

Python言語のフレームワークFlaskを使って、WEBアプリの “Hello World!” を動作させるまでの手順を説明します。Windowsの場合はWSLでWEBアプリを動作させ、同じパソコン上のWEBブラウザで localhost を参照して動作を確認します。

Python実行環境の準備

PythonはWEBアプリの開発だけでなく、ライブラリを使ってデータ解析やディープラーニングなど様々な用途に使われます。その際にライブラリ間のバージョンの齟齬によって動作に不具合が出ることがあるため、開発プロジェクトの動作環境を仮想化するためのツールが多数存在します。ここでは virtualenv を使用します。

  • Pythonのバージョンを確認

Python2 が入っていればそのバージョンが表示される。処理系によっては Python2 がインストールされておらず、Python3 のバージョンが表示される場合もあります。

Python3 のバージョンを表示。

WSLでUbuntuをインストールした場合、Macのターミナルを使っている場合は、Python3が既にインストールされていますので、”3″で始まるバージョンが表示されるはずです。ここではPython 3.8.5がインストールされている前提で手順を説明します。

その他の環境ではコマンドpython(“3″なし)がPython3に関係付けられていたり、インストールされているPython3のバージョンが古かったりする場合もあります。

  • pip3とgitをインストール

pip3とgitがインストールているか確認してください。

それぞれHelpが表示されれば既にインストールされています。Helpが表示されなければインストールしてください。Windows(WSL)でのインストールコマンドです。gitについてはここも参照してください。

Macにpip3をインストールするコマンドは次のとおりです。

  • virtualenvをインストール

あとで使いますので、virtualenvの使い方をまとめておきます。作業ディレクトリでコマンドを実行してください。

virtualenv –version バージョンの確認
virtualenv [作成する環境名] 仮想環境の作成
source [環境名]/bin/activate 仮想環境の有効化
deactivate 仮想環境の無効化

Python/Flaskで”Hello World!”

  • 作業ディレクトリを作る

C:\app がFlaskのアプリを開発する作業フォルダで、WSLのホームディレクトリにシンボリックリンクされていると仮定します。つまり、WSL内の ~/app/ に C:\app が見えます。その下にアプリ名「myproject」でフォルダを作ります。異なるフォルダー構成・名前にする場合は以降の説明を読み替えてください。Macの場合も同様に、ホームディレクトリに app という名前でフォルダーを作ってください。

異なるフォルダー構成・名前にする場合は以降の説明を読み替えてください。

この説明では「myproject」という名前にしましたが、最終的にHerokuにデプロイすることを計画している場合は、アプリの名前をユニークな名称にしておいてください。「myproject」のままではHerokuで名前が重複しているとしてアプリが作れません。

myprojectのフォルダはWindowsで作っても構いませんが、WSL内で作る場合はこのようにします。

  • virtualenvで仮想環境を作る

さらに続けて、myprojectの内部でPythonの仮想環境を作ります。仮想環境の名前をmyprojectenvとします。virtualenvコマンドはmyprojectの中で実行してください。

成功したらコマンドプロンプトの先頭に (myprojectenv) と表示され、仮想環境の中であることが示されます。

  • Flaskのアプリをコーディングする

myprojectの中でFlaskの “Hello World!” アプリをコーディングします。ファイル名は myproject.py、内容は下のとおりです。WSLの中でviエディタを使っても、Windowsの世界でファイル編集してもかまいません。Windowsでテキストエディタを使用する場合はエンコーディングがUTF-8であることを確認してください。

Flaskはデフォルトではポート番号=5000番で動作しますが、最後の行で指定することもできます。

  • MacOS の Monterey の場合

MacでMontereyを使っている場合、Montereyが5000番ポートを使ってしまっているので、”OSError: [Errno 48] Address already in use” といエラーが発生します。5000番以外のポート番号を指定してください。

  • 必要なライブラリをインストールする

コマンドプロンプトの前に (myprojectenv) が表示されて仮想環境の中であることを確認します。間違えるとWSL本体の環境にインストールされてしまいます。Hello World! を動かすにはFlaskが必要なのでインストールします。

もっと高度なアプリを作る時には、いろいろなライブラリが必要になります。そのようなライブラリもここでインストールしてください。Herokuにデプロイする予定であればgunicornもインストールしておいてください。WSLでは不要ですが、requirements.txt の中に自動的に現れるようにするためです。

そのアプリ用を動作させるための requirements.txt が供給されている場合は、次のコマンドで必要なライブラリが一括でインストールされます。requirements.txt については後で説明します。

  • アプリを起動する

  • ブラウザで動作を確認する

http://localhost:5000 にアクセスして Hello World! と表示されたら成功です。

 

More…

Hello World! をベースに更に高度なアプリ開発にチャレンジしてください。ディレクトリ構成は例えば下のようになります。「myproject」等の名前は適宜変更してください。

アプリの内容に応じて必要なライブラリをインストールすることになりますが、必ずvirtualenvの仮想環境の中でpip3を使ってインストールしてください。そうすることで他のアプリに悪影響が生じることを回避できます。

pip3コマンドで、現在の仮想環境にインストールされているライブラリの一覧を表示することができます。

その結果をファイルに保存します。ファイル名は requirements.txt とするのが慣例です。

開発したアプリをサーバーにデプロイしたり、同種の別のアプリを開発するとき等など、同じ環境を作ることができます。

 

コメント