新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2010-02-25

[Python]TurboGears2 悔悟録

えーと、基本的なインストール方法は前回の記事のとおりで問題無いですが、念のためおさらいです。


概ねの手順はHow to install TurboGears 2 ー TG2 v2.0 documentationの通り…なんだけど、オイラは途中から違う方法でインストールしました。

ザクリと手順となるコマンドだけを抜き出すと、以下のような具合です。
wget http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo aptitude install libsqlite3-dev sqlite3 python-dev build-essential
sudo easy_install virtualenv
### ここまではほぼ公式ドキュメントどおり。以下、easy_installに頼りまくる。
sudo easy_install TurboGears
sudo easy_install TurboGears2


これで入った次第。



で、問題はプロジェクトの作成でごっそりエラーを吐いていた箇所。
事実、あのままではエラーが出てしまい、開発どころではない状態となりましたorz
腑に落ちないので調べてみると、 Loose Agilist: TurboGears 2 (2) というサイトにて paster というヘルパーを使った方法が紹介されていました。

というか、これが正しい方法なんだよね!?tg-adminってなんなのさ、ねえ!?

…と、ここまで書いて気がついたのですが、

・turbogears : ヘルパープログラム = tg-admin
・turbogears2 : ヘルパープログラム = paster

という事なんだよね…orz
つまりインストールだって下手をしなくても、Ubuntuなら
sudo aptitude install python-turbogears2

でOKだったのでは???

2010-11-14 追記
sudo aptitiudeとなっていたのをsudo aptitudeに修正しました。
ご指摘ありがとうございます。

2010-02-22

[Python]TurboGears2への逆襲 - TurboGears2インストールメモ

ついにUbuntu9.10にインストールできました!

概ねの手順はHow to install TurboGears 2 — TG2 v2.0 documentationの通り…なんだけど、オイラは途中から違う方法でインストールしました。

ザクリと手順となるコマンドだけを抜き出すと、以下のような具合です。

wget http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo aptitude install libsqlite3-dev sqlite3 python-dev build-essential
sudo easy_install virtualenv
### ここまではほぼ公式ドキュメントどおり。以下、easy_installに頼りまくる。
sudo easy_install TurboGears
sudo easy_install TurboGears2


これで入った次第。
試しにtg-adminを実行します。


yt@nephos:~/turbogears$ tg-admin quickstart
/usr/local/lib/python2.6/dist-packages/CherryPy-2.3.0-py2.6.egg/cherrypy/lib/cptools.py:3: DeprecationWarning: the md5 module is deprecated; use hashlib instead
import md5
/usr/local/lib/python2.6/dist-packages/CherryPy-2.3.0-py2.6.egg/cherrypy/lib/profiler.py:54: UserWarning: Your installation of Python doesn't have a profile module. If you're on Debian, you can apt-get python2.4-profiler from non-free in a separate step. See http://www.cherrypy.org/wiki/ProfilingOnDebian for details.
warnings.warn(msg)
/usr/local/lib/python2.6/dist-packages/CherryPy-2.3.0-py2.6.egg/cherrypy/filters/sessionfilter.py:33: DeprecationWarning: the sha module is deprecated; use the hashlib module instead
import sha
/usr/local/lib/python2.6/dist-packages/PEAK_Rules-0.5a1.dev_r2582-py2.6.egg/peak/rules/indexing.py:220: DeprecationWarning: object.__new__() takes no parameters
/usr/local/lib/python2.6/dist-packages/ToscaWidgets-0.9.4-py2.6.egg/tw/core/view.py:202: DeprecationWarning: object.__new__() takes no parameters
obj = object.__new__(cls, *args, **kw)
Enter project name: DrunkenStein
Enter package name [drunkenstein]:
Do you need Identity (usernames/passwords) in this project? [no]
Selected and implied templates:
TurboGears#tgbase tg base template
TurboGears#turbogears web framework

Variables:
egg: DrunkenStein
elixir: False
identity: none
package: drunkenstein
project: DrunkenStein
sqlalchemy: True
sqlalchemyversion: SQLAlchemy>=0.4.3
sqlobject: False
Creating template tgbase
Creating directory ./DrunkenStein
Recursing into +einame+.egg-info
Creating ./DrunkenStein/DrunkenStein.egg-info/
Copying PKG-INFO to ./DrunkenStein/DrunkenStein.egg-info/PKG-INFO
/usr/local/lib/python2.6/dist-packages/Cheetah-2.4.2-py2.6.egg/Cheetah/Compiler.py:1509: UserWarning:
You don't have the C version of NameMapper installed! I'm disabling Cheetah's useStackFrames option as it is painfully slow with the Python version of NameMapper. You should get a copy of Cheetah with the compiled C version of NameMapper.
"\nYou don't have the C version of NameMapper installed! "
Skipping file /usr/local/lib/python2.6/dist-packages/TurboGears-1.1-py2.6.egg/turbogears/qstemplates/qsbase/+einame+.egg-info/sqlobject.txt_tmpl
Recursing into +package+
Creating ./DrunkenStein/drunkenstein/
Copying __init__.py to ./DrunkenStein/drunkenstein/__init__.py
Copying release.py_tmpl to ./DrunkenStein/drunkenstein/release.py
Recursing into static
Creating ./DrunkenStein/drunkenstein/static/
Recursing into css
Creating ./DrunkenStein/drunkenstein/static/css/
Skipping file /usr/local/lib/python2.6/dist-packages/TurboGears-1.1-py2.6.egg/turbogears/qstemplates/qsbase/+package+/static/css/empty_tmpl
Recursing into images
Creating ./DrunkenStein/drunkenstein/static/images/
Copying favicon.ico to ./DrunkenStein/drunkenstein/static/images/favicon.ico
Copying tg_under_the_hood.png to ./DrunkenStein/drunkenstein/static/images/tg_under_the_hood.png
Copying under_the_hood_blue.png to ./DrunkenStein/drunkenstein/static/images/under_the_hood_blue.png
Recursing into javascript
Creating ./DrunkenStein/drunkenstein/static/javascript/
Skipping file /usr/local/lib/python2.6/dist-packages/TurboGears-1.1-py2.6.egg/turbogears/qstemplates/qsbase/+package+/static/javascript/empty_tmpl
Recursing into templates
Creating ./DrunkenStein/drunkenstein/templates/
Copying __init__.py to ./DrunkenStein/drunkenstein/templates/__init__.py
Copying MANIFEST.in_tmpl to ./DrunkenStein/MANIFEST.in
Creating template turbogears
Recursing into +package+
Copying command.py_tmpl to ./DrunkenStein/drunkenstein/command.py
Recursing into config
Creating ./DrunkenStein/drunkenstein/config/
Copying __init__.py to ./DrunkenStein/drunkenstein/config/__init__.py
Copying app.cfg_tmpl to ./DrunkenStein/drunkenstein/config/app.cfg
Copying log.cfg_tmpl to ./DrunkenStein/drunkenstein/config/log.cfg
Copying controllers.py_tmpl to ./DrunkenStein/drunkenstein/controllers.py
Copying json.py_tmpl to ./DrunkenStein/drunkenstein/json.py
Copying model.py_tmpl to ./DrunkenStein/drunkenstein/model.py
Recursing into static
Recursing into css
Skipping file /usr/local/lib/python2.6/dist-packages/TurboGears-1.1-py2.6.egg/turbogears/qstemplates/quickstart/+package+/static/css/login.css_tmpl
Copying style.css to ./DrunkenStein/drunkenstein/static/css/style.css
Recursing into images
Copying contentbg.png to ./DrunkenStein/drunkenstein/static/images/contentbg.png
Copying error.png to ./DrunkenStein/drunkenstein/static/images/error.png
Replace 1081 bytes with 3638 bytes (4/4 lines changed; 14 lines added)
Copying favicon.ico to ./DrunkenStein/drunkenstein/static/images/favicon.ico
Copying header_inner2.png to ./DrunkenStein/drunkenstein/static/images/header_inner2.png
Copying headerbg.png to ./DrunkenStein/drunkenstein/static/images/headerbg.png
Copying info.png to ./DrunkenStein/drunkenstein/static/images/info.png
Copying inputbg.png to ./DrunkenStein/drunkenstein/static/images/inputbg.png
Copying loginbg.png to ./DrunkenStein/drunkenstein/static/images/loginbg.png
Copying loginbottombg.png to ./DrunkenStein/drunkenstein/static/images/loginbottombg.png
Copying loginheader-left.png to ./DrunkenStein/drunkenstein/static/images/loginheader-left.png
Copying loginheader-right.png to ./DrunkenStein/drunkenstein/static/images/loginheader-right.png
Copying menu-item-actibg-first.png to ./DrunkenStein/drunkenstein/static/images/menu-item-actibg-first.png
Copying menu-item-actibg.png to ./DrunkenStein/drunkenstein/static/images/menu-item-actibg.png
Copying menu-item-border.png to ./DrunkenStein/drunkenstein/static/images/menu-item-border.png
Copying menubg.png to ./DrunkenStein/drunkenstein/static/images/menubg.png
Copying ok.png to ./DrunkenStein/drunkenstein/static/images/ok.png
Copying pagebg.png to ./DrunkenStein/drunkenstein/static/images/pagebg.png
Copying star.png to ./DrunkenStein/drunkenstein/static/images/star.png
Copying strype2.png to ./DrunkenStein/drunkenstein/static/images/strype2.png
./DrunkenStein/drunkenstein/static/images/tg_under_the_hood.png already exists (same content)
./DrunkenStein/drunkenstein/static/images/under_the_hood_blue.png already exists (same content)
Copying warning.png to ./DrunkenStein/drunkenstein/static/images/warning.png
Recursing into templates
Skipping file /usr/local/lib/python2.6/dist-packages/TurboGears-1.1-py2.6.egg/turbogears/qstemplates/quickstart/+package+/templates/login.html_tmpl
Copying master.html to ./DrunkenStein/drunkenstein/templates/master.html
Copying welcome.html to ./DrunkenStein/drunkenstein/templates/welcome.html
Recursing into tests
Creating ./DrunkenStein/drunkenstein/tests/
Copying __init__.py to ./DrunkenStein/drunkenstein/tests/__init__.py
Copying test_controllers.py_tmpl to ./DrunkenStein/drunkenstein/tests/test_controllers.py
Copying test_json.py_tmpl to ./DrunkenStein/drunkenstein/tests/test_json.py
Copying test_model.py_tmpl to ./DrunkenStein/drunkenstein/tests/test_model.py
Copying README.txt_tmpl to ./DrunkenStein/README.txt
Copying dev.cfg_tmpl to ./DrunkenStein/dev.cfg
Copying sample-prod.cfg_tmpl to ./DrunkenStein/sample-prod.cfg
Copying setup.py_tmpl to ./DrunkenStein/setup.py
Copying start-+package+.py_tmpl to ./DrunkenStein/start-drunkenstein.py
Copying test.cfg_tmpl to ./DrunkenStein/test.cfg
Running /usr/bin/python setup.py egg_info
running egg_info
writing requirements to DrunkenStein.egg-info/requires.txt
writing DrunkenStein.egg-info/PKG-INFO
writing top-level names to DrunkenStein.egg-info/top_level.txt
writing dependency_links to DrunkenStein.egg-info/dependency_links.txt
writing entry points to DrunkenStein.egg-info/entry_points.txt
writing paster_plugins to DrunkenStein.egg-info/paster_plugins.txt
reading manifest file 'DrunkenStein.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.kid' under directory 'drunkenstein/templates'
writing manifest file 'DrunkenStein.egg-info/SOURCES.txt'


おほっふぉおおっ!!

2010-02-21

[Python]TurboGearsでtb-adminユーティリティがコケた - 苦悩篇

egg篇から続く
何とか不足パッケージをインストールしたっぽいけど、どうやらまだまだ必要なものがあるようだ。
How to install TurboGears 2 によると、


  1. Python

  2. Setuptools

  3. Database & Drivers

  4. other dependencies

  5. virtualenv




らしい。Database & Driversとother dependencies、virtualenvあたりはほとんど手つかずなので、これらをインストールしていく。

データベース及びドライバ


TurboGearsは、デフォルトのORマッパーとしてSQLAlchemyというのを使うそうだ。こいつはまだインストールしていないので、eazy_install でインストールする。

yt@nephos:~/turbogears$ sudo easy_install SQLAlchemy
[sudo] password for yt:
Searching for SQLAlchemy
Best match: SQLAlchemy 0.5.5
SQLAlchemy 0.5.5 is already the active version in easy-install.pth

Using /usr/lib/pymodules/python2.6
Processing dependencies for SQLAlchemy
Finished processing dependencies for SQLAlchemy


その他の依存パッケージって?


Installing non python dependencies

だそうなので、要するにRDBMSそのものやらを入れろ、と。
とりあえずDBが無いと始まらないので、MySQLを放り込む。

yt@nephos:~/turbogears$ sudo aptitude install mysql-server


virtualenvパッケージもeazy_installで


このvirtualenvというのは、どうやら環境変数の仮想化を行うことで、アプリケーションのポータビリティを高めるものっぽいけど、実際はどうなんだろうか。あまり理解できていない。ともあれ、これもインストール。

yt@nephos:~/turbogears$ sudo easy_install virtualenv
Searching for virtualenv
Reading http://pypi.python.org/simple/virtualenv/
Reading http://virtualenv.openplans.org
Best match: virtualenv 1.4.5
Downloading http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.4.5.tar.gz#md5=d3c621dd9797789fef78442e336df63e
Processing virtualenv-1.4.5.tar.gz
Running virtualenv-1.4.5/setup.py -q bdist_egg --dist-dir /tmp/easy_install-oOX55K/virtualenv-1.4.5/egg-dist-tmp-BTVcM5
warning: no previously-included files matching '*.*' found under directory 'docs/_templates'
Adding virtualenv 1.4.5 to easy-install.pth file
Installing virtualenv script to /usr/local/bin

Installed /usr/local/lib/python2.6/dist-packages/virtualenv-1.4.5-py2.6.egg
Processing dependencies for virtualenv
Finished processing dependencies for virtualenv


インストールの確認


Validate the installation

本来はこんな方法でインストール状況を確認するらしい。

(tg2env)$ paster --help

これで"TurboGears2:"の項目が出てくればOKだと言うが…


yt@nephos:~/turbogears$ paster --help
Usage: paster [paster_options] COMMAND [command_options]

Options:
--version show program's version number and exit
--plugin=PLUGINS Add a plugin to the list of commands (plugins are Egg
specs; will also require() the Egg)
-h, --help Show this help message

Cannot load command tginfo: (TurboJson 1.1.4 (/usr/local/lib/python2.6/dist-packages/TurboJson-1.1.4-py2.6.egg), Requirement.parse('TurboJson>=1.2.1'))
Cannot load command quickstart: (TurboJson 1.1.4 (/usr/local/lib/python2.6/dist-packages/TurboJson-1.1.4-py2.6.egg), Requirement.parse('TurboJson>=1.2.1'))
Commands:
create Create the file layout for a Python distribution
help Display help
make-config Install a package and create a fresh config file/directory
points Show information about entry points
post Run a request for the described application
request Run a request for the described application
serve Serve the described application
setup-app Setup an application, given a config file


うー。TurboJsonのバージョンが低いってことかな?

TurboJsonもeazy_installで



yt@nephos:~/turbogears$ sudo easy_install TurboJson
[sudo] password for yt:
Searching for TurboJson
Best match: TurboJson 1.2.1
Removing TurboJson 1.1.4 from easy-install.pth file
TurboJson 1.2.1 is already the active version in easy-install.pth

Using /usr/lib/pymodules/python2.6
Processing dependencies for TurboJson
Finished processing dependencies for TurboJson

おーし。次はpasterでチェック。

yt@nephos:~/turbogears$ paster --help
Usage: paster [paster_options] COMMAND [command_options]

Options:
--version show program's version number and exit
--plugin=PLUGINS Add a plugin to the list of commands (plugins are Egg
specs; will also require() the Egg)
-h, --help Show this help message

/usr/lib/pymodules/python2.6/tw/core/view.py:223: DeprecationWarning: object.__new__() takes no parameters
obj = object.__new__(cls, *args, **kw)
Commands:
create Create the file layout for a Python distribution
help Display help
make-config Install a package and create a fresh config file/directory
points Show information about entry points
post Run a request for the described application
request Run a request for the described application
serve Serve the described application
setup-app Setup an application, given a config file

TurboGears2:
quickstart Create a new TurboGears 2 project.
tginfo Show TurboGears 2 related projects and their versions

微妙にワーニング出てるのが気に入らないけど、とりあえず"TurboGears2"の文字は出てきた。

[Python]TurboGearsでtb-adminユーティリティがコケた - egg篇

奮闘篇より続く

そういえばeggってなんだ?


さっきからgoogle先生に教えを請うているうちに、ちょくちょく見かける「egg」の文字。なんぞこれ?と先生に聞いてみると、Javaで云うところのjarに相当するらしい。そんでもって、PyPIというレポジトリにいろんなeggが溜め込まれているそう。「ぱいぱい」って名前もすごいけど、これ要するにPerlでいうところのCPANじゃないですか。ほほー。

足りないものはeggで入れればいいじゃない


さらに先生が言うには、「汝、eazy_installでウハウハじゃぞ。」らしい。
なんでも、さっきのsetuptoolsをインストールする事でeazy_installというユーティリティを使えるようになったそうで、これを使えばeggをインストールできまっせ。ということらしい。
ようし。早速試すぞ。

yt@nephos:~/turbogears$ sudo easy_install SQLObject
Searching for SQLObject
Reading http://pypi.python.org/simple/SQLObject/
Reading http://sqlobject.org
Reading http://sqlobject.org/
Reading http://sqlobject.org/devel/
Best match: SQLObject 0.12.1
Downloading http://pypi.python.org/packages/2.6/S/SQLObject/SQLObject-0.12.1-py2.6.egg#md5=f475d31ecccd959d0769121422d9ce44
Processing SQLObject-0.12.1-py2.6.egg
creating /usr/local/lib/python2.6/dist-packages/SQLObject-0.12.1-py2.6.egg
Extracting SQLObject-0.12.1-py2.6.egg to /usr/local/lib/python2.6/dist-packages
Adding SQLObject 0.12.1 to easy-install.pth file
Installing sqlobject-admin script to /usr/local/bin

Installed /usr/local/lib/python2.6/dist-packages/SQLObject-0.12.1-py2.6.egg
Processing dependencies for SQLObject
Finished processing dependencies for SQLObject

おお!なんかうまくいったみたいだ!

ちなみに奮闘篇で不足っぽかったshaとmd5は、もともとpython2.6以前で利用されているパッケージらしく、2.6以降からはhashlibというパッケージで賄っているそうな。そんなら、これでどうさね。

yt@nephos:~/turbogears$ sudo easy_install hashlib
Searching for hashlib
Reading http://pypi.python.org/simple/hashlib/
Reading http://code.krypto.org/python/hashlib/
Best match: hashlib 20081119
Downloading http://code.krypto.org/python/hashlib/hashlib-20081119.zip
Processing hashlib-20081119.zip
Running hashlib-20081119/setup.py -q bdist_egg --dist-dir /tmp/easy_install-SjZ1h2/hashlib-20081119/egg-dist-tmp-y36dU0
no previously-included directories found matching 'build'
no previously-included directories found matching 'dist'
no previously-included directories found matching 'RCS'
no previously-included directories found matching 'CVS'
no previously-included directories found matching '.svn'
Modules/shamodule.c:18:20: error: Python.h: No such file or directory
Modules/shamodule.c:19:26: error: structmember.h: No such file or directory
Modules/shamodule.c:47: error: expected specifier-qualifier-list before ‘PyObject_HEAD’
Modules/shamodule.c:58: error: expected ‘)’ before ‘*’ token
Modules/shamodule.c: In function ‘SHAcopy’:
Modules/shamodule.c:76: error: ‘SHAobject’ has no member named ‘Endianness’
  :
  :
 中 略
  :
  :
error: Setup script exited with error: command 'gcc' failed with exit status 1


あら。ダメか。どうやらPython.hが無いのが原因ぽい。
んじゃあ、python-dev入れれば解決のはず。


$ sudo aptitude insatall python-dev

として、


$ sudo easy_install hashlib
Searching for hashlib
Reading http://pypi.python.org/simple/hashlib/
Reading http://code.krypto.org/python/hashlib/
Best match: hashlib 20081119
Downloading http://code.krypto.org/python/hashlib/hashlib-20081119.zip
Processing hashlib-20081119.zip
Running hashlib-20081119/setup.py -q bdist_egg --dist-dir /tmp/easy_install-8sT2Do/hashlib-20081119/egg-dist-tmp-2P55fs
no previously-included directories found matching 'build'
no previously-included directories found matching 'dist'
no previously-included directories found matching 'RCS'
no previously-included directories found matching 'CVS'
no previously-included directories found matching '.svn'
zip_safe flag not set; analyzing archive contents...
Adding hashlib 20081119 to easy-install.pth file

Installed /usr/local/lib/python2.6/dist-packages/hashlib-20081119-py2.6-linux-x86_64.egg
Processing dependencies for hashlib
Finished processing dependencies for hashlib


よしキター!!!

苦悩篇へ続く

[Python]TurboGearsでtb-adminユーティリティがコケた - 奮闘篇

[Python]Ubuntu9.10でTurboGearsことはじめもチェックするヨロシ。

オイラのUbuntu9.10マシンでもこけました。

yt@nephos:~/turbogears$ tg-admin quickstart
Traceback (most recent call last):
File "/usr/bin/tg-admin", line 5, in
from pkg_resources import load_entry_point
File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 2566, in
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 524, in resolve
raise DistributionNotFound(req) # XXX put more info here
pkg_resources.DistributionNotFound: TurboJson>=1.1.4,<1.2


setuptoolsパッケージが足りない?


はあ、どうやらいくつかPythonパッケージが不足しているようで。
google先生教えてもらうところによると、どうやらFedora5でも同じような目にあった方が居たらしく、http://www.turbogears.org/にある ez_setup.py というスクリプトが必要らしい。
さらに調べてみたところでは、このスクリプトはsetuptoolsと呼ばれるパッケージのようだ。

ようし、www.turbogears.orgにアクセス!


アクセスしたら、上部メニューのInstallリンクをクリック。
How to install TurboGears 2って書かれたページに飛ばされるので、Prerequisites for all methodsのところにあるUnixの項を確認してみる。すると、

wget http://peak.telecommunity.com/dist/ez_setup.py | sudo python

だそうです。では実行。

yt@nephos:~/turbogears$ wget http://peak.telecommunity.com/dist/ez_setup.py | sudo python
--2010-02-21 13:56:43-- http://peak.telecommunity.com/dist/ez_setup.py
peak.telecommunity.com をDNSに問いあわせています... 209.190.5.234
peak.telecommunity.com|209.190.5.234|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 10285 (10K) [text/plain]
`ez_setup.py' に保存中

100%[======================================>] 10,285 25.5K/s 時間 0.4s

2010-02-21 13:56:43 (25.5 KB/s) - `ez_setup.py' へ保存完了 [10285/10285]

見てのとおり、このままではどう見てもDLするだけです。本当に有難うございました。
Ubuntuでは、

$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ sudo python ez_setup.py

としなくてはダメです。
では気を取り直して実行。

yt@nephos:~/turbogears$ sudo python ez_setup.py
Downloading http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg
Processing setuptools-0.6c11-py2.6.egg
Copying setuptools-0.6c11-py2.6.egg to /usr/local/lib/python2.6/dist-packages
Adding setuptools 0.6c11 to easy-install.pth file
Installing easy_install script to /usr/local/bin
Installing easy_install-2.6 script to /usr/local/bin

Installed /usr/local/lib/python2.6/dist-packages/setuptools-0.6c11-py2.6.egg
Processing dependencies for setuptools==0.6c11
Finished processing dependencies for setuptools==0.6c11

お、うまくsetuptoolsをインストールできたっぽいぞ。

改めて、tg-adminを実行


では、もう一度トライしてみる。

yt@nephos:~/turbogears$ tg-admin quickstartTraceback (most recent call last):
File "/usr/bin/tg-admin", line 5, in
from pkg_resources import load_entry_point
File "/usr/local/lib/python2.6/dist-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 2607, in

File "/usr/local/lib/python2.6/dist-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 565, in resolve
error that occurred. Usually this will be a ``DistributionNotFound`` or
pkg_resources.DistributionNotFound: TurboJson>=1.1.4,<1.2

おろろ、ダメか。
あ、そういえば先ほどのフォーラムに、

http://www.turbogears.org/ からリンクをたどって、
ez_setup.py をダウンロードする。

# sudo python2.4 ez_setup.py -f http://www.turbogears.org/download/index.html --script-dir /usr/local/bin TurboGears

インストール済みの、TurboGears が conflict しているのでインストールできないという。-D オプションをつけろとあるのでやってみる。
# sudo python2.4 ez_setup.py -D -f http://www.turbogears.org/download/index.html --script-dir /usr/local/bin TurboGears

て書いてる。しまった、真ん中のコマンド以降は試していないじゃないか…
では試そう。

yt@nephos:~/turbogears$ sudo python2.4 ez_setup.py -f http://www.turbogears.org/download/index.html --script-dir /usr/local/bin TurboGears
sudo: python2.4: command not found

あ、インタプリタwww


yt@nephos:~/turbogears$ sudo python ez_setup.py -f http://www.turbogears.org/download/index.html --script-dir /usr/local/bin TurboGears
Searching for TurboGears
Best match: TurboGears 1.0.8
Adding TurboGears 1.0.8 to easy-install.pth file
Installing tg-admin script to /usr/local/bin

Using /usr/lib/pymodules/python2.6
Processing dependencies for TurboGears
Searching for TurboJson>=1.1.4,<1.2
Reading http://www.turbogears.org/download/index.html
Reading http://files.turbogears.org/eggs/
Reading http://pypi.python.org/simple/TurboJson/
Reading http://docs.turbogears.org/TurboJson
Reading http://www.turbogears.org/docs/plugins/template.html
Reading http://www.turbogears.org/download/
Best match: TurboJson 1.1.4
Downloading http://pypi.python.org/packages/source/T/TurboJson/TurboJson-1.1.4.tar.gz#md5=f05f01b84b7d8eaa5f161b0af123bfb7
Processing TurboJson-1.1.4.tar.gz
Running TurboJson-1.1.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-SwYDni/TurboJson-1.1.4/egg-dist-tmp-01Z5s_
Adding TurboJson 1.1.4 to easy-install.pth file

Installed /usr/local/lib/python2.6/dist-packages/TurboJson-1.1.4-py2.6.egg
Searching for TurboCheetah>=1.0
Reading http://pypi.python.org/simple/TurboCheetah/
Reading http://docs.turbogears.org/TurboCheetah
Best match: TurboCheetah 1.0
Downloading http://files.turbogears.org/eggs/TurboCheetah-1.0.tar.gz
Processing TurboCheetah-1.0.tar.gz
Running TurboCheetah-1.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-tLG6Lc/TurboCheetah-1.0/egg-dist-tmp-qzNWkh
Adding TurboCheetah 1.0 to easy-install.pth file

Installed /usr/local/lib/python2.6/dist-packages/TurboCheetah-1.0-py2.6.egg
Finished processing dependencies for TurboGears

おろ?いいんじゃないの??

再び改めて、tg-adminを実行するも…


ではでは、またトライしてみる。三度目の正直と言うし、きっと大丈夫。

yt@nephos:~/turbogears$ tg-admin quickstart
/usr/lib/pymodules/python2.6/cherrypy/lib/cptools.py:3: DeprecationWarning: the md5 module is deprecated; use hashlib instead
import md5
/usr/lib/pymodules/python2.6/cherrypy/filters/sessionfilter.py:33: DeprecationWarning: the sha module is deprecated; use the hashlib module instead
import sha
/usr/lib/pymodules/python2.6/dispatch/predicates.py:379: DeprecationWarning: object.__new__() takes no parameters
return ExprBase.__new__(klass,function,*argexprs)
/usr/lib/pymodules/python2.6/tw/core/view.py:223: DeprecationWarning: object.__new__() takes no parameters
obj = object.__new__(cls, *args, **kw)
Warning: using SQLAlchemy since your version of SQLObject does not meet the requirements: SQLObject>=0.10.1
Enter project name: ^CTraceback (most recent call last):
File "/usr/bin/tg-admin", line 8, in
load_entry_point('TurboGears==1.0.8', 'console_scripts', 'tg-admin')()
File "/usr/lib/pymodules/python2.6/turbogears/command/base.py", line 408, in main
command.run()
File "/usr/lib/pymodules/python2.6/turbogears/command/quickstart.py", line 188, in run
self.name = raw_input("Enter project name: ")
KeyboardInterrupt

おー。一応聞かれました。プロジェクト名何にするの?って。
でも、まだ文句を言われている模様。どうも

  • md5

  • sha

  • SQLObject


あたりに不足があるっぽい。どうすりゃいいのさ。

egg篇へ続く

[Python]Ubuntu9.10でTurboGearsことはじめ


本末転倒かもしれないけど、Pythonを学ぶためにTurboGearsを使おうと思う。


自分は今のところ、Pythonではまともに "Hello,World!プログラム" すらソラで組むことができない。
まわりを見渡すと、天下のGoogleはGoogle AppsでPythonをいの一番にサポートしているし、Microsoftも.NETにおいてIronPythonという形で実装している。学んでおいて、損は無い言語の一つに違いない。

そんなわけで、仕事はおろか、プライベートですらまともに触れたことのないpythonに慣れておこうと思い立った。
手始めに参考書として、TurboGears×Python (LLフレームワークBOOKS)を購入した。MVCフレームワークなら、PerlでCatalystに触れているので、概念的に全然違うということも無いだろう。

TurboGearsをインストール


手始めに、インストールしないことには何も始まらない。
本にはFedora Core及びWindowsにおけるインストール方法が説明されていたが、Ubuntu9.10であれば、

$ sudo aptitude install python-turbogears python-turbogears2

だけで、pythonもろとも導入してくれる。しかし、なんで python-turbogears と python-turbogears2 を両方入れないとダメなんだろう。

プロジェクトを作る


tg-admin というユーティリティプログラムを使って作る。このあたりはCatalystで云うところのcatalyst.plとほぼ同じように見える。一つ違うのは、Catalystの場合はcatalyst.plにプロジェクト名を引数として渡す必要があったが、TurboGearsの場合、プロジェクト名に関わらず、

$ tg-admin quickstart

とすれば良い。
実はここで python-turbogears2 しかインストールしていないと、tg-admin がインストールされないのだ。オイラも思いっきりここで引っかかりました><

...ん?エラーがでたぞ?
[Python]TurboGearsでtb-adminユーティリティがコケた - 奮闘篇

追記
ここを見る限りでは、TurboGearsの動作はかなり絶望的なのか。。。
まいったなあ。このためだけに仮想マシン立ち上げるのは絶対に嫌だしなあ。

と言うわけで、ubuntu9.10でTurboGears2を動作させた方、情報下さいm(_ _)m

続く???

2010-02-16

[OpenVZ]/dev/stdin や /dev/stdout が無い時の対処

VEコンテナでcpanつかってTemplate入れようとしたら、

cpan> install Template
Running install for module Template
Running make for A/AB/ABW/Template-Toolkit-2.22.tar.gz

Trying with "/usr/bin/wget -O -" to get
http://ftp.jaist.ac.jp/pub/CPAN/authors/id/A/AB/ABW/Template-Toolkit-2.22.tar.gz

System call "/usr/bin/wget -O - "http://ftp.jaist.ac.jp/pub/CPAN/authors/id/A/AB/ABW/Template-Toolkit-2.22.tar.gz" > /root/.cpan/sources/authors/id/A/AB/ABW/Template-Toolkit-2.22.tar"
returned status 72057594037927935 (wstat -1)
Warning: expected file [/root/.cpan/sources/authors/id/A/AB/ABW/Template-Toolkit-2.22.tar.gz] doesn't exist
LWP not available
Please check, if the URLs I found in your configuration file
(http://ftp.jaist.ac.jp/pub/CPAN/) are valid. The urllist can be edited.
E.g. with 'o conf urllist push ftp://myurl/'

Could not fetch authors/id/A/AB/ABW/Template-Toolkit-2.22.tar.gz
Giving up on '/root/.cpan/sources/authors/id/A/AB/ABW/Template-Toolkit-2.22.tar.gz'
Note: Current database in memory was generated on Tue, 16 Feb 2010 03:07:04 GMT


なんでファイルが保存されていないんでしょ。とりあえず

/usr/bin/wget -O - "http://ftp.jaist.ac.jp/pub/CPAN/authors/id/A/AB/ABW/Template-Toolkit-2.22.tar.gz" > /root/.cpan/sources/authors/id/A/AB/ABW/Template-Toolkit-2.22.tar

としたら、わかりました。


# /usr/bin/wget -O - "http://ftp.jaist.ac.jp/pub/CPAN/authors/id/A/AB/ABW/Template-Toolkit-2.22.tar.gz" > /root/.cpan/sources/authors/id/A/AB/ABW/Template-Toolkit-2.22.tar
--22:27:44-- http://ftp.jaist.ac.jp/pub/CPAN/authors/id/A/AB/ABW/Template-Toolkit-2.22.tar.gz
Resolving ftp.jaist.ac.jp... 150.65.7.130
Connecting to ftp.jaist.ac.jp|150.65.7.130|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 492219 (481K) [application/x-gzip]
Saving to: `STDOUT'

100%[=================================================================================================================================================================>] 492,219 2.25M/s in 0.2s

22:27:45 (2.25 MB/s) - `-' saved [492219/492219]


え?おいおい、これってもしかして・・・

# ls /dev/std*
ls: /dev/std*: No such file or directory


ありゃりゃ。。。/dev/stdin と /dev/stdout が無いんですね。
しょうがないんで、作りましょう。

# ln -s /proc/self/fd/0 /dev/stdin
# ln -s /proc/self/fd/1 /dev/stdout
# ln -s /proc/self/fd/2 /dev/stderr


この辺を参考にしました。
Cannot install ESET Security on Debian 4.0 Etch Virtuozzo VPS « Just Another Sysadmin