LoginSignup
12
8

More than 5 years have passed since last update.

Pythonのフレームワークbottleのメモ

Posted at

はじめに

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/
12
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8