pythonxyのインストールその後

IDLEの使用に慣れていたのでIPythonはちょっと使いにくい。とは言ってもIDLEもそのまま使えるが。pythonxyが必ずしも原因というわけではないのだが、いくつか問題が発生。

足りないファイル

py2exeをインストールして使おうとしたら、”msvcp90.dllファイルが無い”と怒られた。検索して見つけたmsvcp90.dllファイルを、Python26フォルダにコピーすることで回避。
↓使用したsetup.pyファイル。

# usage
# % python setup.py py2exe

from distutils.core import setup
import py2exe

py2exe_options = {
  "compressed": 1,
  "optimize": 2,
  "bundle_files": 1}

setup(
  options = {"py2exe": py2exe_options},
  windows = ["testProgram.py"])

最新版のmatplotlibはaxes3dをサポートしない

以前は動いていたスクリプトが動かなくなった。エラーメッセージは以下の通り。

    import matplotlib.axes3d as p3
ImportError: No module named axes3d

下の情報を信じれば、axes3dはmatplotlibのバージョン0.98以降、サポートから外されたらしい。pythonxyが原因ではなかったみたいだが、これはこれでショックだ。
http://old.nabble.com/Please-help-with-3d-scatter-plot-td20188336.html

matplotlibを使うスクリプトのバイナリ化

matplolibで図を描くスクリプトをpy2exeでバイナリ化した。作成されたバイナリは起動するが、図を描くことをしてくれない。エラーメッセージは特に出てこないのでたちが悪い。もちろんスクリプトのまま実行すれば、正常に動作する。たぶんこれはsetup.pyファイルの書き方が悪いのだろう。昔のファイルの使いまわしだから。includesとexcludesを指定している部分が怪しい。どれをincludesすべきなのか正直よく分からないのだが、ちょっと考えなければなるまい。
以下、setup.pyファイル。

import os
from distutils.core import setup
import py2exe
import glob

opts = {
"py2exe": {"includes": ["matplotlib.backends","matplotlib.figure","matplotlib.numerix.fft",
"matplotlib.numerix.linear_algebra","matplotlib.numerix.random_array",
"matplotlib.backends.backend_tkagg","pylab","numpy",],
"excludes": ["_gtkagg","_tkagg","_agg2","_cairo","_cocoaagg","_fltkagg","_gtk","_gtkcairo",],
"dll_excludes": ["libgdk-win32-2.0-0.dll","libgobject-2.0-0.dll",]}}

path_mpl_data = os.path.abspath("c:/Python26/Lib/site-packages/matplotlib/mpl-data")
data_files = [
("mpl-data", glob.glob(os.path.join(path_mpl_data, "*.*"))),
("mpl-datav", [os.path.join(path_mpl_data, "matplotlibrc")]),
("mpl-data/images", glob.glob(os.path.join(path_mpl_data, "images/*.*"))),
("mpl-data/fonts", glob.glob(os.path.join(path_mpl_data, "fonts/*.*")))]

setup(
  windows=[{"script": "testProgram.py"}],
  options=opts,
  data_files=data_files )