このエントリはPythonアドベントカレンダー2011の25日目として、書いてもらった Pyramid@Python3の翻訳です。
tarekはエキスパートPythonの著者であり、PyconJP2011でもPython3のパッケージングについて基調講演をしていただきました。
以下翻訳です。
Pyramid @ Python3
最近のChrisによるWebObの作業をよくチェックしているなら、
WebObとPyramidがPython3互換になったことを知っているだろう。
このことで、Python3は、これから新しくWebプロジェクトをはじめるのにとても魅力的な対象になった。
PasteとPasteScriptはまだPython3へのポーティングが必要だが、
Pyramidチームはそれを選択しなかった。
彼らは、自分たちが使うpasterの代替を作成した。
これらは、Pyramidを使うプロジェクトを初期化したり、.iniファイルを使ってアプリケーションを起動する。
PasteScriptとプロジェクトテンプレートを使うすべてのPython3フレームワークにとって、
Pasteを使わずに代替を使うのがシンプルな方法なのかは、わからない。
加えて、普通の典型的なWebアプリケーションを作るのに必要なほとんどのライブラリやPyramidの機能が、すでにPython3をサポートしてる。
たとえば、SQLAlchemyや、MySQLにアクセスするためのPyMysql、MemcachedのためのPylibmcだ。
まだ、Python3対応してなさそうなのは以下のもの。
- gevent
- gunicorn
- python-ldap
- Cornice ― まもなく対応する予定だ。
これらに挑戦してみたいと思ったら、Python3.2の最新版を使おう。
そして、https://github.com/Pylons/pyramid/wiki/Python-3-Portingを読んで、詳細を把握しよう。
足りないライブラリがあるなら、ここに追加してくれ。
メリークリスマス。
文中のChrisというのは、repozeプロジェクトを始め、repoze.bfg(後のPyramid)を作った人です。現在のpyramidチームのリーダーですね。webobもpylonsプロジェクトに合流して、両者で協力してpython3対応を進めてきたわけです。
Paste,PasteScript,PasteDeployとWSGI創設時から長らく使い続けられているライブラリ、ツール群でしたが、いまのところPasteDeployのみがPython3対応しています。Pyramidはさまざまな議論の末、PasteとPasteScriptから必要なコードだけポーティングして、Pyramid内の独自のコマンドとして取り込むことにしました。
Webアプリケーションを実行するような汎用ツールがPyramidをインストールしないと使えないのも異論がある話だと思います。ただ、Pyramidで使いたいだけなのに、汎用ツールで公開してしまってサポートしきれないという危険を感じてるのでしょうかね。リソースは有限ですから。
Pyramidと、MySQL, Memcache, SQLAlchemyとPython3で動けば、典型的なWeb+DBアプリケーションを作るのに不自由しなさそうです。ただし、サーバーはgunicorn使いたいです。
Corniceはtarekが最近公開した、pyramidベースのサービスフレームワークです。
pyramidの拡張性をいかしたつくりで、わかりやすいAPIと、Web APIをSphinxドキュメントにおとす(Pythonのリファレンスではなく、URLやHTTP Methodでドキュメントになる。すてきすぎ)Sphinx拡張がついてます。
ということで解説終わり。
メリークリスマス