web2pyを使う
けっこう前から気になっていたpython版のweb framework,web2pyを使ってみようと思います.
いちおう公式ソースは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モジュールが何か分かってないのでそこだけ怖いけどな...