PyramidでWebアプリを作成してみました(環境構築編)

PythonフレームワークDjangoを少し触ってみたのですが、他のフレームワークについても知っておきたいと思い、
Pyramidというフレームワークを使ってみました。






Pyramid とは



OSSPythonで作られているWebアプリ開発フレームワークで、Pylonsの一部として開発されています。
小さく速く堅実に開発することを目的に作られたフレームワークです。

また、1つのPythonファイルで完結するPyramidアプリケーションを作成することができるので、
プロトタイプや、バグの再現、小さなアプリケーション作成といったことを素早く行うことができます。






参考



公式ドキュメント



The Pyramid Web Framework — The Pyramid Web Framework v1.9.1






環境









環境構築



仮想環境を作成します。




$ mkvirtualenv --no-site-package --python /usr/local/bin/python3 env3





作成した仮想環境でPyramidをインストールします。

ちなみに、pip freezeでインストールしたパッケージを確認できます。




(env3)$ pip install pyramid





公式ドキュメントに書いてあるサンプルコードを参考にして
Pythonファイルを作成します。



Hello.py




from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response


def hello_world(request):
return Response('<h1>Hello World!</h1>')


if __name__ == '__main__':
# インスタンスを作成
with Configurator() as config:
config.add_route('hello', '/')
# URLがhelloにマッチしたときに、hello_world関数を呼び出すよう設定
config.add_view(hello_world, route_name='hello')
# WSGI アプリケーション を作成
app = config.make_wsgi_app()

# WSGI アプリケーションとして起動
server = make_server('0.0.0.0', 6543, app)
server.serve_forever()





Pythonプログラムを実行します。




$ python hello.py





下記にアクセスすると「Hello World!」が表示されるはずです。



http://localhost:6543/



f:id:mtomitomi:20180131132325p:plain






Pycharmからひらく



プロジェクトの作成でPyramidmを選択し、インタプリタで作成した仮想環境を選択すると
Pycharmでひらくことができます。



f:id:mtomitomi:20180131132055p:plain






プロジェクトの作成



公式ドキュメントを参照したところ、cookiecutterというツールを使うと
Pyramidに限らずPythonプロジェクトの雛形を作成してくれるようです。



Creating a Pyramid Project — The Pyramid Web Framework v1.9.1





今回はこれを使ってPyramidのプロジェクトを作成したいので、cookiecutterをインストールします。




$ pip install cookiecutter





cookiecutterを使ってテンプレートを作成します。
pyramid-cookiecutter-starterなどのリポジトリもあるのですが、用途によって使い分けが必要なようです。
今回はDBにSQLiteを使ったPyramidプロジェクトを作成したいので、下記リポジトリを引数に指定します。



github.com





プロジェクト名など何回か質問されるので任意の値を入力します。

��何も入力しないとデフォルト値が入ります)




$ cookiecutter gh:Pylons/pyramid-cookiecutter-alchemy --checkout 1.9-branch
...
Run your project.
env/bin/pserve development.ini





作成されたプロジェクトに入り、
テストライブラリをインストールしてテストを実行します。




$ pip install --upgrade pip setuptools

$ pip install -e ".[testing]"

$ pytest
...
pyramid_scaffold/tests.py .. [100%]

============= 2 passed in 2.13 seconds =============





データベースを初期化します。

今回はsample_dbとしていますが、データベース名は任意で変更してください。




$ initialize_sample_db development.ini





アプリケーションを実行します。

ちなみにリロードする場合は、--reloadオプションを付けて実行します。




$ pserve development.ini

Starting server in PID 26768.
Serving on http://localhost:6543
Serving on http://localhost:6543





下記URLにアクセスすると、ブラウザにPyramidの画面が表示されます。



http://localhost:6543



f:id:mtomitomi:20180201144303p:plain





これは、cookiecutterでまだ定義されていないアプリケーションを起動した際に、
デフォルトで表示される画面のようです。

画面右にある、Pyramidロゴをクリックするとデバッグツールバーが表示されます。



f:id:mtomitomi:20180131202138p:plain






やってみた感想



Hello Worldを表示させるまでがとても簡単でした。

今回cookiecutterというツールを使いましたが、これはDjangoプロジェクトでも使うことができるようです。
cookiecutterを使うとき、最初は目的と異なるリポジトリを指定してしまい、
modelsフォルダが作成されなかったりして困ったので、指定するリポジトリには注意したいと思います。



ドキュメントが少し読みづらく手順の理解に少し時間がかかりましたが、
これから実際に簡単なアプリを作ってみて、Pyramidの理解をより深めていきたいと思っています。