daemonfreaks.com

Python Workshop the Edge 2007

posted by jun-g at 日, 01 7月 2007 02:08 JST

あーやっぱり行けばよかった…とライブ中継を見ながらかなり後悔した。

distutilsでCコンパイラにMinGWを使うように設定

posted by jun-g at 日, 17 6月 2007 19:43 JST

distutils/setuptoolsを利用してライブラリをインストールする際、ライブラリによってはCコンパイラを要求してくる場合がある。Windowsの場合標準ではCコンパイラがインストールされていない上、distutilsのデフォルトの設定だとCコンパイラにVCを要求してくるので、MinGWを使用するように設定してみた。

まずはMinGWのインストール。MinGWについては全然詳しくないので、C-Compiler Wiki - MinGW/インストールのページを参考にインストール、および設定を行った。

MinGWのインストールが完了したら、次にdistutilsの設定。distutilsのディレクトリ(Python2.5のデフォルトインストールパスだと、C:\Python25\Lib\distutils)の中に「distutils.cfg」というファイルを作成し、そのファイルに下記を記述して保存した。

[build]
compiler=mingw32

以上の設定でコンパイラにMinGWが使用されるようになった。これでeasy_install使ってガンガンライブラリをインストールできるようになったぜ!という事で一件落着。

散歩

posted by jun-g at 日, 03 6月 2007 03:09 JST

散歩でチルアウトが最近のマイブーム。

  • メガネはかけない
  • 音楽は聴かない
  • 歩きすぎない
  • できるだけ荷物は持たない
  • できるだけ車の少ない静かな道を選ぶ

みたいな自分ルールを決めて、だいたい週一回、一時間ぐらいかけて散歩するようにしている。といってもまだ二回しかしてないけど。

一人で歩いているとつい考え事をしてしまうので、ムカツク事思い出してイライラしてしまったりもするけれど、大きい公園に行って緑の中をのんびり歩いていると、心が落ち着ちつくし、動物もいたりして結構楽しい。

カモ

乗馬場

カモ

親子のカモ

鯉と亀

亀が3匹

写真が撮りたかったので携帯持っていったけど、やっぱり邪魔やったな…。次回からはまた手ぶらで行こう。

Mod_pythonアプリケーションをpdbでデバッグ

posted by jun-g at 月, 28 5月 2007 17:47 JST

今年の2月にリリースされたMod_python-3.3.1から、ディレクティブで設定できる項目が沢山増えてる事にこないだ気づいた。その中にPythonEnablePdbっていう設定を発見。え?mod_pythonでpdb使えるの?って事で試してみた。

test.pyとして以下のコードをpublic_html直下に置いた。

# coding: utf-8

from mod_python import apache

def handler(req):
    req.content_type = "text/plain"
    req.write("Hello, Mod_python!\n")
    return apache.OK

でもって.htaccessに以下を設定を書いた。

AddHandler python-program .py
PythonHandler test
PythonEnablePdb On

ブラウザからリクエストを投げてみると、何事もなくブラウザ上に「Hello, Mod_python!」と表示された。ドキュメントには「httpdを-DONE_PROCESSオプションを付けて起動せよ」と書いてあるので、その通りapacheを再起動してみる。

# apachectl -k stop
# apachectl -DONE_PROCESS

すると、コマンドライン上はプロンプトが返ってこず、応答待ちの状態となった。psコマンドで見てみると、httpdプロセスはひとつだけ動いてる状態になっている。

# ps ax | grep http
78398  p4  S+     0:01.73 /usr/local/sbin/httpd -DONE_PROCESS

この状態でブラウザからリクエストを投げてみると、応答待ちだったコマンドライン上でおもむろにpdbが起動し、コマンド入力待ちになった。適当にpdbのコマンドを実行してみる。

> /home/jun-g/public_html/test.py(6)handler()
-> req.content_type = "text/plain"
(Pdb) l
  1     # coding: utf-8
  2  
  3     from mod_python import apache
  4  
  5     def handler(req):
  6  ->     req.content_type = "text/plain"
  7         req.write("Hello, Mod_python!\n")
  8         return apache.OK
  9  
[EOF]
(Pdb) p req.uri
'/~jun-g/test.py'
(Pdb) r
--Return--
> /home/jun-g/public_html/test.py(8)handler()->0
-> return apache.OK
(Pdb) s

最後まで実行すると普通にブラウザに応答が返ってきた。なるほど。本当にpdbでデバッグできるようになってるみたい。

しかし…これは…便利なのか…?普段ほとんどpdbを使っていないからかもしれないけど、便利かどうか判断がつかない。個人的には今までどおりprintデバッグで十分かな。あと-DONE_PROCESSで起動した場合のhttpdの止め方がわからん。apachectl -k stopでは止まらなかったので、結局kill -9で殺した。

他に以前のバージョンとの違いで気付いた点は

  • PythonDebugを有効にした場合のトレースバックに色々情報が出るようになった。
  • PythonPathに仮想ディレクトリを指定するとエラーになるようになった。

ぐらいかな。あと、mod_pyhton.util.Fieldもちょっと変わってて、以前書いたコードがそのままじゃ動かなかった。けどそれは以前のコードの書き方がまずかっただけかもしんないので、詳細はふせとこう。

ところでDjangoとかTrac経由じゃなくて、直接Mod_python触ってる人っているんかな…。

<<  Page 109 of 127  >>