Glitch

MySQL, MongoDB, Python, Go

web2pyを使う

けっこう前から気になっていたpython版のweb framework,web2pyを使ってみようと思います.

web2py Web Framework

いちおう公式ソースは1.99.4なんだけど,PyPiだと1.98.2.
でもとりあえずpipでインストールする.

$ pip install web2py
Downloading/unpacking web2py
  Downloading web2py-1.98.2.tar.gz (4.7Mb): 4.7Mb downloaded
  Running setup.py egg_info for package web2py
Installing collected packages: web2py
  Running setup.py install for web2py
    changing mode of build/scripts-2.6/w2p_apps from 664 to 775
    changing mode of build/scripts-2.6/w2p_run from 664 to 775
    changing mode of build/scripts-2.6/w2p_clone from 664 to 775
    changing mode of /home/user/.virtualenvs/envname/bin/w2p_clone to 775
    changing mode of /home/user/.virtualenvs/envname/bin/w2p_apps to 775
    changing mode of /home/user/.virtualenvs/envname/bin/w2p_run to 775
Successfully installed web2py
Cleaning up...

滞りなく終了!
んでいろいろ探してみるとweb2py_cloneだったり,mkweb2pyenvだったり.*1
いろいろ実行ファイルの名前かわってらっしゃるのかしら…
とりあえず現在はw2p_cloneを使う.
w2p_cloneのドキュメントを見てみる.

"""
Author: Christopher Steel on behalf of Voice of Access
Copyright: Copyrighted (c) by Massimo Di Pierro (2007-2011)

web2py_clone becomes part of the web2py distribution available
on Pypi via 'pip install web2py'

web2py_clone is one of multiple commands that become available after running
'pip install web2py' in a virtual environment. It requires
mercurial to be installed in the virtual environment.

web2py_clone creates a local clone from the Web2py google code
project in the directory "./web2py," a directory called web2py
one directory up from the location of this script.

./bin/web2py_clone
./web2py
"""

ヘー (´・∀・`)
mercurialってのは分散バージョン管理システム.Gitみたいなもんか.
w2p_cloneの中身はここにある.
w2p_clone -
web2py -


Enterprise Web Framework - Google Project Hosting

.virtualenv/(name)/配下にweb2pyをぶちこむだけのスクリプトですた.あとhgに登録.
とりあえずmercurial入れてw2p_clone実行.

$ yum install hg
$ w2p_clone
cwd now: /home/user/envname
cwd now: /home/user/.virtualenvs/envname/bin
attempting to clone https://code.google.com/p/web2py/
to ../web2py
requesting all changes
adding changesets
adding manifests
adding file changes
added 2833 changesets with 8161 changes to 1257 files
updating to branch default
752 files updated, 0 files merged, 0 files removed, 0 files unresolved

いいかんじ〜
んで以下のコマンドでサーバ起動.

$ python ~/.virtualenvs/envname/web2py/web2py.py --nogui --password=test
web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2011
Version 1.99.4 (2011-12-31 14:37:01) stable
Database drivers available: SQLite3, pymysql
Starting hardcron...
please visit:
        http://127.0.0.1:8000
use "kill -SIGTERM 2082" to shutdown the web2py server

オプションはGUIなしと,パスワード指定です.
TK libraryなるものを入れていればGUIで起動できるのかな.
んでここで気づいたけどversionが最新版の1.99.4.
PyPiでは1.98.2なのに?
これについては次のエントリで.

*1:[http://markmail.org/message/oias744f7sr7atgj:title]

pip install web2pyでインストールされたスクリプトについて

前エントリの派生.
web2pyは公式からソース持ってきても簡単なんだけど,せっかくvirtualenv入れてるしpipでやってしまおうと.
現在PyPiにあるversionは1.98.2.最新の1.99.4じゃない...
とりあえずインストール方法おさらい.

$ mkvirtualenv web2py_demo
$ pip install web2py
ownloading/unpacking web2py
  Downloading web2py-1.98.2.tar.gz (4.7Mb): 4.7Mb downloaded
  Running setup.py egg_info for package web2py
Installing collected packages: web2py
  Running setup.py install for web2py
    changing mode of build/scripts-2.6/w2p_apps from 664 to 775
    changing mode of build/scripts-2.6/w2p_run from 664 to 775
    changing mode of build/scripts-2.6/w2p_clone from 664 to 775
    changing mode of /home/user/.virtualenvs/web2py_demo/bin/w2p_clone to 775
    changing mode of /home/user/.virtualenvs/web2py_demo/bin/w2p_apps to 775
    changing mode of /home/user/.virtualenvs/web2py_demo/bin/w2p_run to 775
Successfully installed web2py
Cleaning up...

スクリプト

メッセージから分かる通り,以下の三つのスクリプトがインストールされました.

  • w2p_clone
  • w2p_apps
  • w2p_run

これを全部使うのかっていうとそうでもありません.
PyPiにあるweb2pyのスクリプトは頻繁に変更されるみたいで,以前は名前が違いました.

変更前 変更後(現在)
web2py_clone w2p_clone
mkweb2pyenv w2p_apps
runweb2py w2p_run

Re: pip install web2py - Christopher Steel - com.googlegroups.web2py - MarkMail

なんか名前が変わって分かりづらくなったなぁ.appsでmakeね.

w2p_clone

端的に言ってしまえばvirtualenvの環境変数下にweb2pyディレクトリをインストールする方法.
公式ではこちらが推薦されているようです.
ソースはこちら.
w2p_clone -
web2py -


Enterprise Web Framework - Google Project Hosting

ソースを見れば分かるんですが,https://code.google.com/p/web2py/からソースを引っ張ってきています.んでhg cloneと.
当たり前なんですがこちらだとcode.google.comから引っ張ってくるんで,最新版(安定板)で環境構築できます.
PyPiにおいてあるweb2pyが前のバージョンでも大丈夫ってことですね.
以下試してみた結果です.

$ w2p_clone
$ python ~/.virtualenvs/web2py_demo/web2py/web2py.py --nogui --password=test
web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2011
Version 1.99.4 (2011-12-31 14:37:01) stable
Database drivers available: SQLite3, pymysql
Starting hardcron...
please visit:
        http://127.0.0.1:8000
use "kill -SIGTERM 2477" to shutdown the web2py server

ちゃんと1.99.4になってる!
ただコマンドが長ったらしい?

w2p_appsとw2p_run

w2p_appsは,pip install web2py時にダウンロードしたenv.tarという圧縮ファイルを指定のディレクトリ,ないしカレントディレクトリに解凍.
w2p_apps -
web2py -


Enterprise Web Framework - Google Project Hosting

w2p_runは,上記w2p_appsで作成したディレクトリを指定,そこにあるweb2pyのソースを実行するというものです.
w2p_run -
web2py -


Enterprise Web Framework - Google Project Hosting

双方共にgluonモジュールというものを使っています.web2pyのモジュールかな?
こちらだと,ローカルでインストールができる,web2pyを展開するディレクトリが指定できる上,サーバもw2p_runコマンドで起動できるのですが,推薦されていないだけあってなんかちょっと動作が不安定っぽいです.
てかw2p_runのなかで環境変数思いっきり書き換えてるのがなんかちょっと...いいんだけども,気をつけないと行けない所.
それと,大きな違いはversion.こちらはpip install web2pyの時のversion,即ちPyPiに登録されているweb2pyのversionを使うため,バージョンが古いことがままあります.
実際2012/1/3現在,1.98.2が立ち上がるので古いです.

$ w2p_apps
Creating a web2py env in: /home/user/web2py_demo
$ w2p_run --nogui --password=test
web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2011
Version 1.98.2 (2011-08-28 09:59:26)
Database drivers available: SQLite3
Starting hardcron...
please visit:
        http://127.0.0.1:8000
use "kill -SIGTERM 2454" to shutdown the web2py server

どっちを使う?

一応公式に推薦されているのはw2p_cloneなのでこちらを使おうと思います.
ただmakeとrunが分かれている方が何かと都合がいいかもなのでw2p_apps&w2p_runのコンビで最新版ちゃんとしてくれるといいなぁ.
てか,w2p_runの引数にvirtualenvの環境変数を入れればいいのでは.

$ w2p_run ~/.virtualenvs/web2py_demo/web2py/ --nogui --password=test
web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2011
Version 1.99.4 (2011-12-31 14:37:01) stable
Database drivers available: SQLite3, pymysql
Starting hardcron...
please visit:
        http://127.0.0.1:8000
use "kill -SIGTERM 2500" to shutdown the web2py server

でけた.
うーむ,gluonモジュールが何か分かってないのでそこだけ怖いけどな...