バッチファイルで Flask を起動する手順についてまとめておきます。
以下の環境で動作確認をしています。
環境:
・ Windows パソコン
・ Python 3.X、および、Anaconda のインストール済み
背景 ~ Anaconda に Flask が入っていた!
これまで、Windows パソコンに仮想環境の Anaconda をインストールし、Python のプログラミングなどをやってきました。
ところが、ふと気づくと、Anaconda 標準での仮想環境を作ると、Python に加え、Flask もインストールされています。
すると、とくに何らの環境設定をすることなく、すぐに Flask を起動できることになります。
HTML や JavaScript のスクリプトを作ったとき、すぐにサーバーで動かすことができ、サーバーの技術検討も簡単にできることになります。
また、Raspberry Pi も持っていますが、起動用 SDカードを作ると、こちらにも標準で Flask が入っています。
すると、Windows や Linux などの OS 環境をあまり気にすることなく、Flask で動く Python のスクリプトさえ作れば、相互に移植して活用することで相乗効果が期待できることになります。(Anaconda も Raspberry Pi も過去かなり使ってきていますが、気づかなかった。。)
ということで、Flask を Windows パソコンで起動するためのバッチファイルと、Flask のスクリプトなどの一式について、まとめておくことにします。
ダブルクリック1発で、開発環境一式を動かすことが可能になります。Python のスクリプトや HTML を加えていくことで、簡単にウェブアプリを開発していくことができることになります。
なお、下記のスクリプトは Anaconda 環境での例としていますが、Flask や jinja2 などを Windows に単独でインストールした場合であっても、ほぼ同様に動くと思います。
バッチファイルの設定手順
① Windows パソコン内に Flask 用のルートディレクトリ(公開フォルダ)として使用するフォルダを作ってください。
例: c:\user\flask_server1
② 上記のフォルダ①の中に、app1.py というファイルを作り、下記のスクリプトを貼りつけて保存してください。
③ ①のフォルダの中に、さらに、templates という名前でフォルダを作ってください。Flask のテンプレートを入れるフォルダです。
④ ③の templates フォルダの中にテキストファイルを作り、ファイル名を “index.html” とし、下記のスクリプトを貼りつけて保存してください。この HTML が Flask のサイトのトップ画面となります。
⑤ ①のフォルダの中に flask1.bat というファイル名でテキストファイルを作り、下記のスクリプトを貼りつけてください。
⑥ Anaconda を使っている場合は、Anaconda3 フォルダがどこにあるか確認し、上記のバッチファイルで [user1] となっている部分を書き換えて、保存してください。
Flask のサーバーを起動し、ブラウザを起動するバッチファイルになっています。
起動方法
⑦ ⑥のバッチファイル flask1.bat をダブルクリックしてください。
→ Flask のサーバーが起動し(タスクバー上に白色の用紙状の Python のプログラムが起動し)、Microsoft Edge などのブラウザでサーバーにアクセスします。
→ ブラウザに Flask のサーバーのトップ画面が表示されたら、成功です!
※ ローカルのパソコン内で、サーバーを起動しています。
※ 終了する場合は、タスクバーに表示されている Flask のサーバー(Python のプログラム)を右クリックし、「ウィンドウを閉じる」を選択してください。ブラウザも閉じてください。
うまく動いたら
・ うまく動いたら、トップページ index.html を書き換えて、サイトの文字列やデザインを修正してみてください。
HTML や app1.py を修正した場合は、Flask の Webサーバー(タスクバーに表示)やブラウザをいったん閉じて、再度、バッチファイルを実行するなどして、修正を反映させてください。
・ app1.py も修正して、テンプレートやサイトのページを追加するなどしてみてください。
・ app1.py から Python のプログラムを呼び出すことも可能です。自作のプログラムを Web アプリ化するなど、応用してみてください。
サンプルスクリプトの説明
Flask のスクリプト app1.py の説明
・ 冒頭の “from flask …” としたところで、Web サーバーとして使用する Flask のパッケージを読み込んでいます。
“app = … “としたところは、Flask を動かすためのお決まりのコマンドです。
・ ”@app.route( “/” )” とした3行の部分で、サイトのトップ(“/”)にアクセスしたときに実行する関数 index1() を定義しています。
・ index1() 関数では、templates フォルダに入れたテンプレート index1.html を読みだして、クライアントに返す処理を記載しています。
・ ”if __name__ … ” とした行以降は、app1.py を実行したときの処理を記載しています。ポート番号 5000 として、デバッグモードで Flask を起動するよう記載しています。
ポート番号等を変えたい場合はこの部分を修正してください。
メインページ index.html の説明
・ もっともシンプルな HTML の記載例としています。
“<head> … </head>” 部分に、ブラウザのページのタブ部分のタイトルを記載しています。
“<body> … </body>” 部分に、HTML の本体部分の内容を記載しています。
うまく動いたら、文字列部分を修正するなどしてみてください。
バッチファイル flask1.bat の説明
・ ”call … activate.bat” の行は、Anaconda を起動させるためのコマンドです。Anaconda を使っていない場合は、記載不要です。
・ ”cd … ” とした行で、flask1.bat が入っている(app1.py も入っている)フォルダに移動します。このフォルダが Web サーバーの公開フォルダ(ルートディレクトリ)となります。
・ ”start … python app1.py” とした行で、上記の app1.py を実行し、Web サーバーを起動しています。
・ ”rundll32.exe … ” とした行で、ブラウザを起動して上記の Web サーバーにアクセスしています。これにより、Flask で作った Web サーバーのトップ画面を表示するようにしています。
まとめ
バッチファイルを使って Flask の Web アプリを起動する手順についてまとめました。
他にも、サーバー関連、Flask 関連のプログラムなどをまとめ、公開しています。
興味があるようでしたら、関連リンクなども参照してみてください。
関連リンク
・ Python で掲示板を作ってみる 【Windows 版】
・ バッチファイルで Anaconda から Python を実行する方法 【Windows】
・ よく使う conda コマンドのまとめ【仮想環境設定】
・ Raspberry Pi で Flask を動かしてみる 【Python】
・ Raspberry Pi でファイルアップローダ 【Flask】
サンプルスクリプト
Flask Webサーバーのスクリプトの例 app1.py
#
# cd C:\user\flask_server1
# python app1.py
#
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def index1():
return render_template( "index.html" )
if __name__ == '__main__':
app.run(port=5000, debug=True)
メインページの例 index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>main page</title>
</head>
<body style="background-color:#efefef;" >
<h1>メインページ</h1>
</body>
</html>
Web サーバーとブラウザを起動するバッチファイルの例 flask1.bat
call C:\Users\[USER1]\Anaconda3\Scripts\activate.bat
cd %~dp0
start /min python app1.py
rundll32.exe url.dll,FileProtocolHandler http://127.0.0.1:5000/
exit
※ 上記のバッチファイルで、[USER1] の部分は、お使いの Windows パソコンの環境で、Anaconda3 フォルダ(activate.bat)が入っているフォルダやファイルのリンクとなるよう、修正してください。