1

Matplotlib/mathtext フォントを使用する wxapp を作成し、それを py2exe で exe に変換しました。結果のexeは私のPCで正常に動作します。ただし、別の場所に移動すると、app.exe.log で次のようにクラッシュします。

~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['STIXGeneral'] not found. Falling back to Bitstream Vera Sans
~\dist\library.zip\matplotlib\font_manager.py:1226: UserWarning: findfont: Could not match :family=Bitstream Vera Sans:style=normal:variant=normal:weight=normal:stretch=normal:size=12. Returning c:\windows\fonts\browai.ttf
~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['STIXSizeOneSym'] not found. Falling back to Bitstream Vera Sans
~\dist\library.zip\matplotlib\font_manager.py:1226: UserWarning: findfont: Could not match :family=Bitstream Vera Sans:style=normal:variant=normal:weight=bold:stretch=normal:size=12. Returning c:\windows\fonts\browai.ttf
~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['STIXSizeThreeSym'] not found. Falling back to Bitstream Vera Sans
~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['STIXSizeFourSym'] not found. Falling back to Bitstream Vera Sans
~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['STIXSizeFiveSym'] not found. Falling back to Bitstream Vera Sans
~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['STIXSizeTwoSym'] not found. Falling back to Bitstream Vera Sans
~\dist\library.zip\matplotlib\font_manager.py:1226: UserWarning: findfont: Could not match :family=Bitstream Vera Sans:style=italic:variant=normal:weight=normal:stretch=normal:size=12. Returning c:\windows\fonts\browai.ttf
~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['STIXNonUnicode'] not found. Falling back to Bitstream Vera Sans
~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['cmb10'] not found. Falling back to Bitstream Vera Sans
~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['cmtt10'] not found. Falling back to Bitstream Vera Sans
~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['cmmi10'] not found. Falling back to Bitstream Vera Sans
~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['cmex10'] not found. Falling back to Bitstream Vera Sans
~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['cmsy10'] not found. Falling back to Bitstream Vera Sans
~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['cmr10'] not found. Falling back to Bitstream Vera Sans
~\dist\library.zip\matplotlib\font_manager.py:1216: UserWarning: findfont: Font family ['cmss10'] not found. Falling back to Bitstream Vera Sans

また、次で終わるトレースバックも表示されます。

...
File "matplotlib\mathtext.pyo", line 720, in _get_glyph
KeyError: 98

見つからないフォントはすべて matplotlib/mathtext で使用されています。

data_files (glob と matplotlib.get_py2exe_datafiles を使用) を取得しようとした setup.py 内の両方のメソッドが機能せず、mpl-data/fonts ディレクトリに何もコピーされていないことがわかりました。ソース ディレクトリ: C:\Python27\Lib\site-packages\matplotlib\mpl-data\fonts には、afm、pdfcorefonts、および ttf の 3 つのフォルダーが含まれています。ttf フォルダーは、上記の数式フォントが配置されている場所です。

setup.py で py2exe を実行し、glob を変更して 3 つのフォント ディレクトリを取得した後、mpl-data フォルダー全体を dist フォルダーに手動でコピーしようとしましたが、それでも同じエラーが発生します。

py2exe を実行した後、matplotlib の font_manager の findfont メソッドが機能していないようです。mathtext.pyo の _get_glyph が Bitstream Vera Sans フォントを使用しようとすると、クラッシュすると思います。

4

1 に答える 1

0

使用matplotlib.get_py2exe_datafiles()は私にとってはうまくいきます。matplotlib の最新バージョンを使用していることを確認し、次のように使用しますsetup.py

datafiles = matplotlib.get_py2exe_datafiles()

setup(...
      ...
      data_files = datafiles,
      ...
     )
于 2013-04-24T13:23:21.477 に答える