Date: 2011-01-23
Tags: python

PyPIアップロードでありがちなreSTがHTMLにならない問題の対策

昨日の (第4回)Python mini hack-a-thon で@t2yが 多言語翻訳サポートツール ikazuchi でPyPIデビューを果たしたんですが、そのときにlong_descriptionに記載したreStrucutredTextのちょっとしたsyntaxエラーのせいでHTMLに変換されないままドキュメントがPyPIにアップロードされてしまいました。そこでreSTのエラーを事前にチェック方法が PyPIデビュー — Python Hack-a-thon 4: ハンズオン v1.0 documentation に書いてあると良いよね、という指摘をもらったので以下の文面をそのページに追加してみました。

注釈

(2011/1/23 @t2yからの指摘 で追加. ありがとう!)

実際にアップロードしてPyPIのページを確認したときに、long_description の内容がHTMLに変換されずにそのままreSTのテキストで表示されてしまう場合、 reSTの記述にエラーがある可能性があります。この場合、upload前にエラーが あるかどうかを確認しておくのがよいでしょう。

docutils付属の rst2html コマンドを使って以下のように実行して エラーが出るかどうか確認する方法があります。

$ python setup.py --long-description | rst2html > output.html

または、Python2.7以降でdocutilsがインストールされている環境であれば、 以下のコマンドのようにエラーを確認することも出来ます。問題がなければ running check だけ表示されますが、問題があれば以下のように表示されます。

$ python setup.py check -r
running check
warning: check: No directive entry for "foo" in module "docutils.parsers.rst.languages.en".
Trying "foo" as canonical directive name. (line 19)

warning: check: Could not finish the parsing.

もう一つの方法として、 haufe.releaser をインストールして python setup.py check_description のように実行する方法もありそうです(未確認)。

ところで、 多言語翻訳サポートツール ikazuchi 、poファイルを半自動でGoogle/Microsoft/Yahooの翻訳APIで翻訳してくれたり、vimからその機能を呼び出してインラインで翻訳実行したりと、かなり便利なツールでした。これはvimで翻訳する人にはかなり重宝しそう。いちどお試しあれ!