はじめに
pipnevを使用し、プロジェクトごとに専用の環境を構築し、アプリケーションを作成していく。
今回はアプリケーションHello Worldをブラウザ上で表示できるところまで実行する。
Pipenvとは
Pipenvとは、プロジェクトごとに自動で専用の環境(仮想環境)を作成し、仮想環境ごとにパッケージ管理を行うことができるライブラリ。
Pipenvを使うと、プロジェクトごと(要は作成したフォルダごと)に専用の環境を作ることができる。通常は、1つのマシン内に複数のプロジェクトがあった場合、それぞれプロジェクトごとに環境を分けることは難しい。
一方、Pipenvを使うことで、他のプロジェクトには影響させずに、そのプロジェクト専用の環境を作ることができる。
Pipenvのインストール
Pipenvのインストールするには、以下のコマンドを実行する。
pip install pipenv
pipenv –versionと打ち、バージョン番号が表示されればインストール成功。
アプリケーションの初期設定
前回作成したapplicationフォルダに移動し、以下のコマンドを実行。
pipenv --three
これにより、applicationフォルダ以下にPython3で動く専用の仮想環境が用意される。同時にPipfile/Pipfile.lockという名前のファイルが作成され、このファイルにパッケージ情報が格納される。
実際に、仮想環境に入ってみる。
pipencv shell
これで、このプロジェクト専用の仮想環境が動き、動かしているマシンの状態に影響を与えずにこのプロジェクトだけで独立した開発が行えるようになる。
最後に、この仮想環境にはFlaskパッケージが入っていないのでインストールする。
pipenv install Flask
アプリケーション本体ファイルの作成
flask_blogというフォルダを作り、その中に__init__.pyという名前でファイルを作成。
# flask blog/__init__.py
from flask import Flask
app = Flask(__name__)
import flask_blog.views
1行目のfrom flask importFlaskで、Flask自体をインポートする。
次にapp=Flask(__name__)とし、Flaskのアプリケーション本体を作成。
最後に、importflask_blog.viewsとし、これから作成するviewsというファイルをインポート。
ビューファイルの作成
次に、flask_blogフォルダ以下に、views.pyという名前のファイルを作成する。
# flask_blog/views.py
from flask_blog import app
@app.route('/')
def show_entries():
return "Hello World!"
このファイルでは、http://127.0.0.1:5000/にリクエストがあったときの処理を書いている。
最初に、from flask_blog importappとし、__init__.pyで作成したappをインポートする。
今回は、@app.route(‘/’)と書くことでhttp://127.0.0.1:5000/にリクエストがあった際にshow_entries()というメソッドが呼び出される。show_entries()メソッドではHelloWorld!という文字が返され、ブラウザに表示される。
起動ファイルの作成
最後に、起動ファイルとなるserver.pyをapplicationフォルダ直下に、以下の内容で作成する。
# server.py
from flask_blog import app
if __name__ == '__main__':
app.run(debug=True)
views.pyを作成したときと同様に、最初にappをインポートする。
次このファイルが直接実行されたとき(つまり、python server.pyと実行されたとき)に実行される処理を記述することができる。
今回は起動ファイルとしてpythonserver.pyとしてアプリケーションを起動したいので、このif文中に起動に必要な処理内容を書きます。中身は、app.run(debug=True)の1行だけです。
debug=Trueの内容が増えています。これは、デバッグモードでアプリケーションを起動するという意味になり、アプリケーション実行時にコンソール画面に多彩な情報が表示されるようになる。
最後に、server.pyを指定してサーバを起動する。
終わりに
今回は、pipnevを使用してプロジェクトごとに専用の環境を構築し、アプリケーションHello Worldをブラウザ上で表示できるところまで実現した。
次回はconfigファイルを作る設定を1つにまとめて扱えるようにする。
コメント