「PythonでWebアプリケーションを開発したい」
「Flask以外のフレームワークを使ってみたい」
本記事の内容
- Bottleとは?
- Bottleのシステム要件
- Bottleのインストール
- Bottleの動作確認
それでは、上記に沿って解説していきます。
Bottleとは?
Bottleは、Webアプリケーションフレームワークです。
そして、Pythonのライブラリとして公開されています。
ここまでの説明なら、単純で済みます。
しかし、Bottleを理解するためには以下の知識が必要です。
- Webサーバー
- アプリケーションサーバー
- WSGI(仕様)
WSGIについては、次の記事で説明しています。
BottleはFlaskと似ています。
触った感じでは、BottleはFlaskはほとんど同じです。
よって、Flaskを理解すればBottleを理解したことになります。
それぐらい似たようなモノです。
もちろん、細部では異なりますけどね。
以上、Bottleについて説明しました。
次は、Bottleのシステム要件を確認しましょう。
Bottleのシステム要件
現時点(2021年12月)でのBottleの最新バージョンは、0.12.19となります。
この最新バージョンは、2020年11月12日にリリースされています。
1年ほどの間、メンテナンスされていない状況です。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
Pythonコードのみでされており、OS依存の箇所はありません。
- Windows
- macOS
- Linux
そして、サポート対象となるPythonのバージョンは以下。
- Python 2.5
- Python 2.6
- Python 2.7
- Python 3.2
- Python 3.3
- Python 3.4
- Python 3.5
- Python 3.6
- Python 3.7
一応、上記が公式に記載されています。
これって、Pythonバージョンは問わないというレベルですね。
基本的には、OS・Pythonバージョンは問わないと言えます。
よって、Bottleのシステム要件は特に注意すべき点はありません。
以上、Bottleのシステム要件を説明しました。
次は、Bottleをインストールしていきます。
Bottleのインストール
検証は、次のバージョンのPythonで行います。
$ python -V Python 3.9.9
まずは、現状のインストール済みパッケージを確認しておきます。
$ pip list Package Version ---------- ------- pip 21.3.1 setuptools 59.6.0 wheel 0.36.2
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、Bottleのインストールです。
Bottleのインストールは、以下のコマンドとなります。
pip install bottle
インストールは、すぐに終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
$ pip list Package Version ---------- ------- bottle 0.12.19 pip 21.3.1 setuptools 59.6.0 wheel 0.36.2
Bottleには、依存するパッケージが存在していません。
その点では、既存環境にも容易に導入することが可能と言えます。
以上、Bottleのインストールを説明しました。
次は、Bottleの動作確認を行います。
Bottleの動作確認
動作確認用のコードです。
app.pyとしてスクリプトを保存します。
app.py
from bottle import route, run, template @route('/hello/<name>') def index(name): return template('<b>Hello {{name}}</b>!', name=name) run(host='localhost', port=8888)
コードが正常に動作した場合は、以下のように表示されます。
「http://localhost:8888/」にアクセスします。
$ python app.py Bottle v0.12.19 server starting up (using WSGIRefServer())... Listening on http://localhost:8888/ Hit Ctrl-C to quit.
404エラーが出ています。
でも、これは正しい動作です。
コード上で指定したのは、以下のパスだけでした。
@route('/hello/<name>')
よって、このパスにアクセスしないといけません。
ということで、次のようなURLにアクセスしてみましょう。
「http://localhost:8888/hello/test」
想定通りの動きです。
一応、2バイト文字も試しておきます。
問題ありません。
なお、トップページにアクセスするには以下のコードを追加。
@route('/') def top(): return 'トップページ'
これを追加して、再起動(Ctrl-Cで停止→app.py起動)します。
URLマッピング(ルーティング)は、Flaskとほぼ同じです。
というより、URLマッピングはどのフレームワークでも似たようなモノになります。
あと、上記コードを実行した際にエラーが出る場合があります。
出る可能性の高いエラーは、以下。
OSError: [Errno 98] Address already in use
ポート8888が、すでに利用されているということです。
このような場合は、空いているポート番号を指定します。
run(host='localhost', port=8080)
そうすれば、上記のエラーは出なくなります。
以上、Bottleの動作確認を説明しました。