我有一个应用程序,其中添加了一个模块,该模块使用vispy
和scipy
(对于Delaunay)绘制数据。
当我在Python(在Windows上为3.4 x64)解释器中运行时,它工作正常,但在使用cx_freeze
冻结时却无法正常工作。它不会给我任何错误消息,只是它不会(安静地)运行。
这是我的cx_freeze
脚本:
buildOptions = dict(packages = ['osgeo._gdal', 'scipy.sparse.csgraph._validation'])
import sys
base = 'Win32GUI' if sys.platform=='win32' else None
executables = [
Executable('main.py', base=base, targetName = 'myApp.exe', icon='ico/myApp.ico')
]
setup(name='MyApp',
version = '0.0.1',
description = 'My fancy app',
author = '[email protected]',
options = dict(build_exe = buildOptions),
executables = executables)
我必须添加
'scipy.sparse.csgraph._validation'
来修复先前缺少的内容,如此处建议的:scipy with py2exe和here寻找DLL问题,我已经尝试使用Dependency Walker,但是没有运气。
如果我用
vispy
图注释掉模块,则一切正常。有什么提示吗? 最佳答案
我试图通过添加带有main
的QApplication
和显示QWigdet
的vispy.app.canvas
来冻结问题所在的模块。这很有帮助,因为我得到了一个与vispy.app.backends._pyside
相关的非常有用的回溯错误。
将其明确添加到我发布的cx_freeze
脚本中后,冻结的应用程序可以工作:
packages = ['osgeo._gdal', 'vispy.app.backends._pyside', 'scipy.sparse.csgraph._validation']
我在构建目录中发现的区别是
QtOpenGL4.dll
和PySide.QtOpenGL.pyd
的存在。没有明确的软件包包含,他们就在那里(我的应用程序已经在使用PySide)。