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 )