はじめに
bottleはpythonの軽量フレームワーク。本体はたった1ファイルだけらしい。
ググれば日本語の記事がたくさん出るので詳しくは割愛。
徐々に更新していく予定。
環境構築
わしのマシン
OS X Yosemite
Ver 10.10.5
pythonのインストール(2.7.10)
参考
http://qiita.com/zaburo/items/fbdaf6c04151671407db
http://qiita.com/zaburo/items/802423b0d2d63b0cb456
実施
- デフォルトだと2.7.11を入れてしまうので修正した
- 2.7.11はバグがあって?うまくbottleが動かなかった
brew edit python
url "https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz"
sha256 "82929b96fd6afc8da838b149107078c02fa1744b7e60999a8babbc0d3fa86fc6"
sha256 "e22a23bec350c287ddcc1d48b1a58b2b27a8d19e79837fa684e71c2eb7ea6456" => :yosemite
上記の箇所を↓↓↓に修正
url "https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz"
sha256 "eda8ce6eec03e74991abb5384170e7c65fcd7522e409b8e83d7e6372add0f12a"
sha256 "726e13ae4d0befdc86ae82c1585393de814609d8f6b2fda5ef2be8514f654c4d" => :yosemite
- homebrewで入れる
brew install python
省略
which python
/usr/local/bin/python
- pipのバージョンアップ
pip2.7 install --upgrade pip
- setuptoolsのバージョンアップ
pip2.7 install --upgrade setuptools
- モジュールのインストール
- とりあえず画像処理系
- pillow
- matplotlib
- matplotlib入れれば他にも色々入るよう。依存関係あり??
- とりあえず画像処理系
pip2.7 install matplotlib
Collecting matplotlib
Downloading matplotlib-1.5.1-cp27-none-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (49.7MB)
100% |████████████████████████████████| 49.7MB 18kB/s
Collecting numpy>=1.6 (from matplotlib)
Downloading numpy-1.11.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (3.9MB)
100% |████████████████████████████████| 3.9MB 227kB/s
Collecting pytz (from matplotlib)
Downloading pytz-2016.4-py2.py3-none-any.whl (480kB)
100% |████████████████████████████████| 481kB 841kB/s
Collecting python-dateutil (from matplotlib)
Downloading python_dateutil-2.5.3-py2.py3-none-any.whl (201kB)
100% |████████████████████████████████| 204kB 576kB/s
Collecting cycler (from matplotlib)
Downloading cycler-0.10.0-py2.py3-none-any.whl
Collecting pyparsing!=2.0.0,!=2.0.4,>=1.5.6 (from matplotlib)
Downloading pyparsing-2.1.1-py2.py3-none-any.whl
Collecting six>=1.5 (from python-dateutil->matplotlib)
Downloading six-1.10.0-py2.py3-none-any.whl
Installing collected packages: numpy, pytz, six, python-dateutil, cycler, pyparsing, matplotlib
Successfully installed cycler-0.10.0 matplotlib-1.5.1 numpy-1.11.0 pyparsing-2.1.1 python-dateutil-2.5.3 pytz-2016.4 six-1.10.0
pip2.7 install pillow
bottle環境構築
- bottleインストール
pip2.7 install bottle
- てきとーなコード用意
- main.pyはルーティングを行う
- top.pyはロジック
/path/to/bottle/app/main.py
from bottle import route, run, static_file, url
from top import index
@route('/static/<filepath:path>')
def static(filepath):
return static_file(filepath, root="./static")
@route('/')
def top():
return index(url)
run(host='localhost', port=8080, debug=True, reloader=True)
/path/to/bottle/app/top.py
from bottle import template, view
import const
@view("index")
def index(url):
return dict(url=url, design_path=const.DESIGN_PATH)
/path/to/bottle/app/const.py
DESIGN_PATH = './static/startbootstrap-sb-admin-2-1.0.8'
- bottle起動
python main.py
- ブラウザで以下のURLにアクセス
http://localhost:8080/
ディレクトリ構成
- いまのところこんなん
- staticディレクトリ内は例
myapp
├── const.py // 定数的な
├── main.py // ルーティング
├── static // 静的なファイルとかを設置
│ ├─ css // 例:css置くとか
│ ├─ js // 例:js置くとか
│ └─ img // 例:画像置くとか
├── top.py // トップ画面の処理
└── views // テンプレート置き場
└── index.tpl // トップ画面のテンプレート
関数メモ
- run
- サーバを起動する関数
- host
- ホストです
- port
- ポートです
- debug
- デバッグモードにするかどうか
- reloader
- ソースの変更保存時にサーバを自動で再起動するかどうか
- これをTrueにしていない場合、ソース変更を反映する場合はサーバを手動で再起動しないといけない
そのほか
- pipで入れたものたちは以下のパスに入った
/usr/local/lib/python2.7/site-packages/