MacOSX10.6 Snow LeopardにSphinxを入れてみる
ちょっとしたきっかけがあって、OSを10.6 Snow Leopard にアップグレード。
ハードウェアを購入して以来、ユーザーのhomeディレクトリ適当に突っ込んできただけだったので、整理の必要を感じていた事もあって「新規インストール」を選択した。
ということで、イチから環境を作ることに。
MacPorts
The MacPorts Project(http://www.macports.org/)を参考にして、Package Installerを使って入れてみる。
http://distfiles.macports.org/MacPorts/MacPorts-1.8.1-10.6-SnowLeopard.dmg
ダウンロード後、マウント->Packageアイコンをダブルクリックでインストール。
インストールできたら、環境変数の追加。
これはbash, zsh向けの記述なのでcsh,tcshの場合は適宜読み替えを。
export PATH=/opt/local/bin:/opt/local/sbin/:$PATH export MANPATH=/opt/local/man:$MANPATH
さらに次のコマンドを打っておく。
% sudo port -d selfupdate % sudo port -d sync
Python
Snow Leopardの場合、OSにプレインストールされているpythonのバージョンは2.6.1なのだけれど、ここはMacPortsで入れられる最新版を入れてみる。
% sudo port install python26
自分の場合、ここでなぜか凄まじい数のパッケージを勝手にインストールしまくってくれた。
たった一行入力しただけなんだけどな。。。
Sphinx
いよいよ本丸。とは言っても、コマンドは一つだけ。
% sudo port install py26-sphinx
ところが、ここでトラブル。
テンプレートエンジンであるJinja2のインストールで、コケる。
<中略> ---> Building py26-jinja2 Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_python_py26-jinja2/work/Jinja2-2.2.1" && /opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 setup.py --no-user-cfg --with-speedups build " returned error 1 Command output: Traceback (most recent call last): File "setup.py", line 86, in <module> """ File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/core.py", line 152, in setup dist.run_commands() File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/dist.py", line 987, in run_commands self.run_command(cmd) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/dist.py", line 1007, in run_command cmd_obj.run() File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/command/build.py", line 134, in run self.run_command(cmd_name) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/cmd.py", line 333, in run_command self.distribution.run_command(command) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/dist.py", line 1007, in run_command cmd_obj.run() File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/setuptools/command/build_ext.py", line 46, in run _build_ext.run(self) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/command/build_ext.py", line 340, in run self.build_extensions() File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/command/build_ext.py", line 449, in build_extensions self.build_extension(ext) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/setuptools/command/build_ext.py", line 175, in build_extension _build_ext.build_extension(self,ext) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/command/build_ext.py", line 460, in build_extension ext_path = self.get_ext_fullpath(ext.name) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/command/build_ext.py", line 633, in get_ext_fullpath filename = self.get_ext_filename(modpath[-1]) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/setuptools/command/build_ext.py", line 85, in get_ext_filename ext = self.ext_map[fullname] KeyError: '_speedups' Error: The following dependencies failed to build: py26-jinja2 py26-pygments Error: Status 1 encountered during processing.
いろいろと調べてみていたところ、日本語の情報は皆無。・・・こまった。
ビルドの段階で"_speedups"という文字列を使った処理の際にKeyErrorが発生してしまっているのだろうというところまでは解ったが、如何せん情報がない。
まずは日本語情報を調べてみたが、それらしい情報はヒットしなかった。
ぅーん、と悩んでも仕方がないので、英語の情報も検索範囲に含めて探してみる。。。
まずはJinja2の公式ドキュメンテーション。
http://jinja.pocoo.org/2/documentation/
Installationのセクションを読むと、「speedupsはデフォルトではOFFになっているから、使うんだったら--with-speedupsを使って」という注意書きがある。
先ほどのログを見ると、そのオプションが指定されている模様。まぁ、公式ドキュメントの指示に正しく従っているのだからそれはいいとしよう。
で、発見したのがこの記事。
http://bitbucket.org/tarek/distribute/issue/41/keyerror-_speedups
結局、macportsのパッケージ自体に問題があったのではなくて、setuptoolsのbuild_ext.pyに問題があったみたい。
上記のエントリでは「0.6.2でFixされる」って書いてある。
が、現時点でmacportsを使ってインストールできるバージョンは「@0.6c9_0」となっている。
つまりは、macportsで入れる場合、上述の対応は自前でやれ、と。
ということで、以下の通り。
修正の内容は上記エントリを参照のこと。
% cd /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/setuptools/command % sudo cp -p build_ext.py build_ext.py_org % vi build_ext.py
で、修正後に改めてportsを実行する。
% sudo port install py26-sphinx
これでOK。