【Python】BottleインストールとWebページを表示(MacOS)


PythonでWebページを作成するのであれば、Python製のWebフレームワークが必要になります。

Webフレームワークはいろいろありますが、今回は軽量の「Bottle(ボトル)」を使用してWebアプリケーション作成までの手順を紹介します。

前回は、WindowsでのWebページ作成までの手順でしたが今回はMacOSでBottleのインストールからWebページ作成までの手順を紹介します。


【Python】でWebページを作成できる「Bottle」のインストールと設定(MacOS)

前回、Windowsでも紹介しましたが、「Bottle」はオープンソースとして提供されている軽量なWebフレームワークです。
Web作成で簡単なサイトを作成するなど練習する物としてはオススメのフレームワークとなります。

「Bottle」の特徴

Bottleは大規模なWebアプリケーションを作成するための昨日は提供されていませんが、地震でWebフレームワークを作成する教材など学習材料としてもおすすめのフレームワークです。

フレームワークとしての構造もわかりやすく、初心者でWebを作成するには最適です。
また、主なBottleの昨日ですが、以下の4つとなります。

【Bottle】が提供する主な機能
名前 説明
ルーティング ユーザーから要求されたURLを処理し、プログラムを対応付ける
テンプレート Webページ(HTML)に値を挿入する機能
ユーティリティ リクエストやレスポンスから情報を取得し、設定するための機能
開発サーバ 開発用の内臓Webサーバ

それでは以下で、実際にPythonでBottleのインストールからWebページの表示までの手順を紹介します。


BottleでWebページを表示する(MacOS)

ここからは実際にMacOSの環境でBottleをインストールし、Webページを表示するまでの流れを説明します。
Pythonをまだインストールしていない方は以下のページを参考にしてください。

【Python】インストールと起動(MacOS)

2019年11月24日

①仮想環境を作成する

まずは、Webアプリケーションを動かすための仮想環境を作成します。
以下では「web」というフォルダを作成し、そのフォルダ内で仮想環境を作成する手順となります。

手順は以下となります。

  1. 仮想環境フォルダを作成するデスクトップまで移動
  2. 「Web」というフォルダを作成
  3. 「web」フォルダ内へ移動
  4. pythonコマンドで仮想環境を実行
$ cd Desktop/           ①
$ mkdir web             ②
$ cd web/               ③
$ python3 -m venv env   ④

「env」というフォルダが作成され、配下に以下のようなファイルとフォルダが作成されました。

$ cd env/
$ ls
bin		include		lib		pyvenv.cfg
$ 

仮想環境(env)を作ったら、それを有効化する必要があります。
以下のコマンドを入力し、仮想環境を実行します。

$
$ source env/bin/activate
(env) web$ 

仮想環境が立ち上がると、プロンプトに(env)が表示されます。

②Bottleをインストールする

仮想環境を作成したら、Bottleをインストールします。
コマンドは以下のコマンドを使用してBottleをインストールします。

pip install bottle

$ pip install bottle
Collecting bottle
  Using cached https://files.pythonhosted.org/packages/69/d1/efdd0a5584169cdf791d726264089ce5d96846a8978c44ac6e13ae234327/bottle-0.12.17-py3-none-any.whl
Installing collected packages: bottle
Successfully installed bottle-0.12.17
WARNING: You are using pip version 19.2.3, however version 19.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(env) web $ 

Bottleをインストールした際に上記のように「WSRNING」が表示され、pipのアップグレードを指示されます。
以下コマンドでアップグレード実行し、pipのバージョンを上げておきましょう。

$ pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/00/b6/9cfa56b4081ad13874b0c6f96af8ce16cfbc1cb06bedf8e9164ce5551ec1/pip-19.3.1-py2.py3-none-any.whl (1.4MB)
     |████████████████████████████████| 1.4MB 2.3MB/s 
Installing collected packages: pip
  Found existing installation: pip 19.2.3
    Uninstalling pip-19.2.3:
      Successfully uninstalled pip-19.2.3
Successfully installed pip-19.3.1
(env) web $ 

③プログラムを作成する

次に、テキストエディタで「Hello World!」という文字列を表示するWebアプリケーションプログラムを作成します。

まずはテキストエディタを開きファイルを作成します。
ここでは「web.py」

テキストの作成は以下となります。
※web.pyをエディタで作成

from bottle import route, run   ①


@route('/hello')   ②
def hello():
    return 'Hello World!'   ③

run(host='localhost', port=8080, debug=True)   ④
  1. 必要なモジュールをインポートする
  2. URLを指定する
    ※ここでは(http://localhost/hello)にアクセスしたときに返事を返すようにする
  3. このURLにアクセスしたときに「hello World!」という文字列でレスポンスを返す
  4. 開発サーバを起動

④開発用Webサーバを起動する

以下のようにコマンドプロンプトで「python3 web.py」を実行します。
すると、Bottleフレームワークの開発用Webサーバが起動します。
※終了するときは「ctrl + C」を押します。

$ source env/bin/activate
(env)$ python3 web.py 
Bottle v0.12.17 server starting up (using WSGIRefServer())...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.

Webブラウザを開き(ここではgoolge chrome)、URLに以下を入力します。

http://localhost:8080/hello

これで以下のようにブラウザ上に「hello World!」と表示されれば成功です。
※ちなみにURLの「localhost」は自分自身のPCのことを差します。「8080」はポート番号です。

デバック

また、今回のプログラムにはデバッグの設定もしているので、Webにアクセスをすると、アクセスログが表示されるようになっています。
確認してくださいね。

(env) web $ python3 web.py 
Bottle v0.12.17 server starting up (using WSGIRefServer())...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.

127.0.0.1 - - [29/Nov/2019 01:42:24] "GET /hello HTTP/1.1" 200 12
127.0.0.1 - - [29/Nov/2019 01:42:24] "GET /favicon.ico HTTP/1.1" 404 742

これで、MacOSにおけるPythonを使用したWebアプリケーションの流れとなります。
Pythonはネットワークエンジニアでもこれから利用しますのでぜひ動かしてみましょうね!

また、これからWebエンジニアを目指す方は参考にしてください。


関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!