Windows + Python2.5 + simplejson をeasy_install出来ないときの対処法
もうマジでWinむかつくんですよ。easy_installでインストールできないモジュールが多すぎるんですよ。多すぎるは、言いすぎだけど・・・
標準モジュールにしてもらいたいくらいのsimplejsonが、winだとなぜかスパッと行ってくれません。そのための対処法、以下三つ
- ソースを持ってくる。
- オプションをつけてインストール
- コピーされないときのおまじない
順を追って説明する
ソース持ってくる。
http://pypi.python.org/pypi/simplejson ここから、ソースを持ってくる。08/03/01現在は、1.7.4でした。そんで、適当なところで解凍します。中身は
U:\MyDoc\Download\simplejson-1.7.4 のディレクトリ 2008/03/01 18:30 <DIR> . 2008/03/01 18:30 <DIR> .. 2008/03/01 18:30 <DIR> build 2008/03/01 18:29 <DIR> docs 2007/10/03 01:57 8,838 ez_setup.py 2008/03/01 18:30 9,075 ez_setup.pyc 2006/06/29 04:34 1,056 LICENSE.txt 2008/02/24 08:05 1,208 PKG-INFO 2008/03/01 18:29 <DIR> scripts 2008/02/24 08:05 59 setup.cfg 2008/02/23 16:02 3,044 setup.py 2008/03/01 18:31 <DIR> simplejson 2008/03/01 18:30 <DIR> simplejson.egg-info
こんな感じになっていた。(コンパイル後なのでファイルが増えている可能性あり)
オプションをつけてインストール
このやり方を見つけた人神だと思った。エラい!ありがとう。
http://jhcore.com/2008/02/03/building-python-packages-from-source-on-windows/
このページを参考にして、コマンドを打ち込む
平常時(この方法だとCコンパイラがどうのこうのといってエラる)
> python setup.py install
今回は、オプションつきでやってあげる。(ソースを展開したフォルダー内でやること)
python setup.py build_ext --compiler=mingw32 install
ってやると、buildっていうフォルダー内になんかいろいろファイルが出来るらしい。
setup.pyやったドス窓(ドス窓っていうのかな?)でPythonを実行してimport simplejsonすると
無事にロードされるんだけど、IDLEとかから実行するとこの段階では、まだそんなモジュール氏らねー
といって怒られる。
おまじない(site-packagesにコピされてないぽいので無理やりコピー)
をすることによって、今回は回避した。やり方が正しいとは思えないが、動いたのでその辺のモヤモヤした気持ちは、忘れることにする。
YOURPATH\\simplejson-1.7.4\build\bdist.win32\egg 内のsimplejsonフォルダーを YOURPATH\Python25\Lib\site-packages\ にコピーする。
Python25\Lib\site-packages\easy-install.pth ファイルを修正する
./simplejson
という文字を最後の行の一行上に追加した。
完成したはず、チェックしてみる。
Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 1.2.1 >>> import simplejson >>> s = simplejson >>> s <module 'simplejson' from 'C:\usr\bin\Python25\lib\site-packages\simplejson\__init__.pyc'> >>>
一件落着
この方法は、sqlobjectとか他のモジュールでも適用できる気がする。ので、sqlobjectとか、昔インストールを断念してしまったモジュールとかにもいつかチャレンジしてみたい。これで、exeのインストーラを探すたびに出る回数が減ることになれば、うれしいなぁ・・・