Vispy アプリをフリーズしようとすると問題が発生します。
これはエラーです:
cx_Freeze: Python error in main script
---------------------------
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
exec(code, m.__dict__)
File "console_example.py", line 14, in <module>
File "C:\Python34\lib\site-packages\vispy\scene\visuals.py", line 41, in __init__
subclass.__init__(self, *args, **kwargs)
File "C:\Python34\lib\site-packages\vispy\visuals\text\text.py", line 380, in __init__
self._font = self._font_manager.get_font(face, bold, italic)
File "C:\Python34\lib\site-packages\vispy\visuals\text\text.py", line 127, in get_font
self._fonts[key] = TextureFont(font, self._renderer)
File "C:\Python34\lib\site-packages\vispy\visuals\text\text.py", line 45, in __init__
self._kernel = np.load(op.join(_data_dir, 'spatial-filters.npy'))
File "C:\Python34\lib\site-packages\numpy\lib\npyio.py", line 369, in load
fid = open(file, "rb")
FileNotFoundError: [Errno 2] No such file or directory: '*snip*\\build\\exe.win32-3.4\\library.zip\\vispy\\io\\_data\\spatial-filters.npy'
これを見て、それが参照するファイルがlibrary.zipに含まれているかどうかを確認しました。そうではなかったので、cx_freeze setup.py を次のように変更しました。
import sys
from cx_Freeze import setup, Executable
build_exe_options = {"packages": ["pyglet", "vispy"],
"includes": ["vispy.app.backends._pyglet"],
"zip_includes": [("C:\\Python34\\Lib\\site-packages\\vispy\\io\\_data\\spatial-filters.npy",
"vispy/io/_data/spatial-filters.npy")]}
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup(name = "Test",
version = "0.1",
description = "Test",
options = {"build_exe": build_exe_options},
executables = [Executable("console_example.py", base=base)])
_data からの spatial-filters.npy ファイルは、意図されている library.zip 内にありますが、エラーは残ります。他に何をする必要がありますか?