Wednesday, June 20, 2012

python / docutils で reStructuredText を HTML 変換

.rst 形式というドキュメントフォーマットを知りました。python の docutils というパッケージで .rst から .html 変換できることを知り python 環境を構築してみました。

python にも、ruby の rvm のように pythonbrewvirtualenv という定番の環境切替ツールがあるようなのですが、今回はひとまずユーザディレクトリに python 環境構築してみようということで virtual-python という枯れたツールを使ってみました。

http://peak.telecommunity.com/dist/virtual-python.py からスクリプトをダウンロードし、利用したいバージョンの python コマンドで実行すると、--prefix オプションで指定したディレクトリ以下に bin lib include のファイル/シンボリックリンクを作成してくれます。

# ~/python に作成する例
$ mkdir ~/python
$ wget -O virtual-python.py http://peak.telecommunity.com/dist/virtual-python.py
$ python2.6 virtual-python.py --prefix=~/python

$ ls ~/python/bin
python
$ ls ~/python/include
python2.6
$ ls ~/python/lib
python2.6

rvm のように環境変数を書き換えてくれてくれませんので、自前で ~/.bash_profile 等でパスを通しておきます。

$ vim ~/.bash_profile
...
PATH=$HOME/python/bin:$PATH
export PATH

$ source ~/.bash_profile
$ which python
~/python/bin/python

python には ruby の gem にあたる setuptoolsというパッケージ管理ツールがあります。これも ~/python にインストールしてみます。

あらかじめ ~/.pydistutils.cfg を作成します。

[install]
install_lib = ~/python/lib/python2.6/site-packages
install_scripts = ~/python/bin

http://peak.telecommunity.com/dist/ez_setup.py からスクリプトをダウンロードし、python コマンドで実行します。

$ wget -O ez_setup.py http://peak.telecommunity.com/dist/ez_setup.py
# 環境変数 PYTHONPATH を指定してから実行します。
$ PYTHONPATH=~/python/lib/python2.6/site-packages; ~/python/bin/python ez_setup.py
...
# easy_install が ~/python/bin にインストールされています
$ which easy_install
~/python/bin/easy_install

docutils をインストールします。~/python/bin 以下に rst2*.py が作成されました。

$ easy_install docutils
$ cd ~/paython/bin
$ ls rst*
rst2html.py ...

rst2html.py で .rst ファイルを .html にしてみます。

$ vim test.rst
========= 
 見出し1 
=========
---------
 見出し2 
---------

.. contents::

第1章 
---------

第1章の本文です。

第2章 
---------

第2章の本文です。

 - リスト1 
 - リスト2 

$ rst2html.py test.rst > test.html

http://docutils.sourceforge.net/rst.html#try-it-online にある方法等で確認してみてください。