インストール可能?という意味がよくわからなかったので、少し先のチュートリアルまで勉強してみました。
あらかじめ知識がないとわからないところは保留しながら進めていかないと進まないよね
flaskのチュートリアルを行っています。前回までで、flaskrというシンプルなブログアプリケーションを作成してきました。今回は、このブログアプリケーションを「pip」コマンドで他プロジェクトでも利用できるようにする変更を加えていきます。
チュートリアルはこちらのページになります。
こんな人の役に立つかも
・PythonでWebアプリケーションを作成したい人
・flaskのチュートリアルを行なっている人
・flaskのチュートリアルでブログアプリflaskrを作成している人
チュートリアルの概要
「インストール可能にする」というのは、「distribution」ファイルを作成することができる構成にするということのようです。
「distribution」ファイルは「.whl」という拡張子のついたファイルで、後のチュートリアルで出てきます。今は、distributionファイルを作成することで、Webサーバーへのデプロイ(本番環境にアップロードして稼働させること)が普通のPyhonのパッケージのように簡単にできるようになる、程度でとらえるのが良さそうです。
また、インストール可能にする構成で、今まで作成したflaskrというブログアプリをPythonパッケージとしてimportできるようになるということです。
新しくflaskでWebアプリを作成しようと考えたときに、「flaskr」に実装した機能が流用できる、ということですね。pipコマンドで、flaskパッケージをインストールしたのと同じように、flaskrもpipできるようになります。
開発をしていて、規模が拡大してきたり、成果物ができたりすると必要になってきそうです。
今回追加するプログラムは、「setup.py」と「MANIFEST.ini」というファイルになります。
flaskのアプリをチュートリアルの最初でPythonパッケージと同じ構成にしてimportできるようにしました。それに追加して、「setup.py」と「MANIFEST.in」を作成することで、外部のプロジェクトへpipで追加することができるようになります。ここでやっと、flaskアプリをパッケージ構造としてきた意味が見いだせました。
「setup.py」と「MANIFEST.ini」は「flask-tutrial」フォルダに配置しましょう。
「setup.py」の作成
setpu.pyでflaskrパッケージの名前やバージョンを定義していきます。今回は、flaskrをパッケージ化するための必要最低限のチュートリアルプログラムを実行します。
from setuptools import find_packages, setup
setup(
name='flaskr',
version='1.0.0',
packages=find_packages(),#finde_packageでflaskrがimportしているパッケージをリスト化してくれる。
include_package_data=True,#staticやtemplatesといったフォルダを含むのでTrueとしてMANIFESTに記載する。
zip_safe=False,
install_requires=[
'flask',
],
)
setup.pyはPythonのパッケージに関わるファイルで、より詳細な説明は以下の公式ドキュメントを参照するのが良いです。(zip_safeとinstall_requiresについては以下のドキュメントにも記載されていませんでした。)
「MANIFEST.in」の作成
先ほど、setup.pyで「include_package_data=True」としました。flaskrパッケージが含むファイルがありますよ、と示すフラグで、「MANIFEST.in」でファイルの一覧を作成します。
include flaskr/schema.sql
graft flaskr/static
graft flaskr/templates
global-exclude *.pyc
指定するファイルには、Webアプリのview関連のPythonファイル以外のデータファイルを指定します。
今回の指定の方法には次の記載方法が利用されています。
・include:必要な「ファイル」を指定します。今回はsqlファイルのみです。
・graft:フォルダを指定する場合はgraftです。staticとtemplatesがそれに該当します。
・global-exclude:ソースツリー(flaskrフォルダの中)の中にある除外するパターンを指定するとのことです。今回は、*.pycなのでコンパイル済みのpythonファイルが除外されます。テストで実行したときに作成される「__pycashe__」内の一連のファイルに該当します。
以下のページに、MANIFESTの説明がありますので、参考にしました。
実行する
最後に、pipで環境に追加してみます。
flask-tutorialフォルダ直下に移動して、venv仮想環境を立ち上げます。(以下コマンドはmacの場合ですが、windowsは「venv¥Script¥activate」で仮想環境を立ち上げます。それ以外は同じです。)
$. venv/bin/activate
(venv)$ pip install -e .
pipにeオプションをつけることで、編集可能状態で追加することができます。このようにすると、flaskrのプログラムの変更も随時反映されるようになるようです。pipの指定する階層は「.」なので、同階層の「setup.py」を実行してflaskrを環境に追加しています。
最後に、仮想環境のパッケージ一覧を取得してみます。
$ pip list
pipコマンドで、仮想環境にflaskrパッケージを入れることができました。
まだ使いどころがピンときていませんが、今後ピンと来るタイミングがあるはずです!