windowsでmatlibplot読み込むとfont_manager.pyでMemoryErrorが出る←解決
Pythonでscipy,numpy,matlibplot使っている人がかなりいるようでちょっと手を出してみようと思ったのです。そして、すごく可能性を感じました。
toolboxなしのmatlabはもういらないです。と感じました。
仕事でmatlabを virtual model simulator として使ってるのだが、いわゆるCADとして使わなければmatlabを使い続ける理由がないな。逆に言うと、まだCADとして手厚いサポートがあるのでmatlabの契約を継続するのですけど。
でも、pythonの開発人口の層の厚みを鑑みるに時間の問題な気がする。誰か作って下さい。積極的に乗り換えますwww
ところで、インストール時にちょっとはまった点をメモ。
windowsでmatlibplot読み込むとfont_manager.pyでMemoryErrorが出た。コマンドラインからも、python shellからも同じエラー
環境
winxp
python2.6、python2.7
Numpy,Scipy,matplotlibは以下のバイナリパッケージをお手軽インストール。site-packages内に展開されます。
numpy-1.6.1-win32-superpack-python2.6.exe
scipy-0.9.0-win32-superpack-python2.6.exe
matplotlib-1.0.1.win32-py2.6.exe
>>>import matplotlib.pyplot Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> import matplotlib.pyplot File "C:\Python26\lib\site-packages\matplotlib\pyplot.py", line 23, in <module> from matplotlib.figure import Figure, figaspect File "C:\Python26\lib\site-packages\matplotlib\figure.py", line 18, in <module> from axes import Axes, SubplotBase, subplot_class_factory File "C:\Python26\lib\site-packages\matplotlib\axes.py", line 14, in <module> import matplotlib.axis as maxis File "C:\Python26\lib\site-packages\matplotlib\axis.py", line 10, in <module> import matplotlib.font_manager as font_manager File "C:\Python26\lib\site-packages\matplotlib\font_manager.py", line 1349, in <module> _rebuild() File "C:\Python26\lib\site-packages\matplotlib\font_manager.py", line 1299, in _rebuild fontManager = FontManager() File "C:\Python26\lib\site-packages\matplotlib\font_manager.py", line 1004, in __init__ self.ttffiles = findSystemFonts(paths) + findSystemFonts() File "C:\Python26\lib\site-packages\matplotlib\font_manager.py", line 332, in findSystemFonts for f in win32InstalledFonts(fontdir): File "C:\Python26\lib\site-packages\matplotlib\font_manager.py", line 214, in win32InstalledFonts key, direc, any = _winreg.EnumValue( local, j) MemoryError
解決手順
python26\Lib\site-packages\matplotlib\font_manager.py
の206行目に
local = None
を入れる。
try: local = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, fontdir) except OSError: continue local = None if not local: files = []
http://d.hatena.ne.jp/wikuba/20110614/1308033727
local = none
じゃだめ
NameError: global name 'none' is not defined
って出るのですぐ気付くだろうけど。