我使用PyInstaller将我的应用程序捆绑到一个.exe文件中。 问题是使用--onedir选项可以正常工作,但使用--onefile生成时无法找到模块。PyInstaller:一个模块不包含在--onefile中,但与--onedir正常工作
两个--onedir并在建设过程中--onefile说:
<...>
INFO: Analyzing hidden import 'sklearn.utils.sparsetools._graph_validation'
<...>
运行与--onedir工作正常创建的实例,但--onefile产生的实例终止:
<...>
File "_min_spanning_tree.pyx", line 8, in init sklearn.utils.mst._min_spanning
_tree (sklearn\utils\sparsetools\_min_spanning_tree.c:4754)
ImportError: No module named _graph_validation
这里是我的.spec文件
onedir.spec
# -*- mode: python -*-
a = Analysis(['../../brainactivity.py'],
hiddenimports=['greenlet', 'sklearn.utils.sparsetools._graph_validation', 'sklearn.utils.sparsetools._graph_tools', 'scipy.special._ufuncs_cxx', 'sklearn.utils.lgamma', 'sklearn.utils.weight_vector'],
hookspath=None,
runtime_hooks=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='brainactivity.exe',
debug=False,
strip=None,
upx=True,
console=True,)
coll = COLLECT(exe,
a.binaries,
[('./data/201305182224-DF-facial-3-420.csv', '../../data/201305182224-DF-facial-3-420.csv', 'DATA')],
[('./model/brain_20k_colored_properly.obj', '../../model/brain_20k_colored_properly.obj', 'DATA')],
[('brain_fragment_shader.glsl', '../../brain_fragment_shader.glsl', 'DATA')],
[('brain_vertex_shader.glsl', '../../brain_vertex_shader.glsl', 'DATA')],
a.zipfiles,
a.datas,
strip=None,
upx=True,
name='brainactivity')
onefile.spec
# -*- mode: python -*-
a = Analysis(['../../brainactivity.py'],
hiddenimports=['greenlet', 'sklearn.utils.sparsetools._graph_validation', 'sklearn.utils.sparsetools._graph_tools', 'scipy.special._ufuncs_cxx', 'sklearn.utils.lgamma', 'sklearn.utils.weight_vector'],
hookspath='.',
runtime_hooks=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
a.binaries,
[('./data/201305182224-DF-facial-3-420.csv', '../../data/201305182224-DF-facial-3-420.csv', 'DATA')],
[('./model/brain_20k_colored_properly.obj', '../../model/brain_20k_colored_properly.obj', 'DATA')],
[('brain_fragment_shader.glsl', '../../brain_fragment_shader.glsl', 'DATA')],
[('brain_vertex_shader.glsl', '../../brain_vertex_shader.glsl', 'DATA')],
a.zipfiles,
a.datas,
name='brainactivity.exe',
debug=False,
strip=None,
upx=True,
console=True)
对于pyinstaller 3,您必须使用下面的代码导入** ** collect_submodules: '从PyInstaller.utils.hooks导入collect_submodules' [PyInstaller文档] (https://pythonhosted.org/PyInstaller/#useful-items-in-pyinstaller-utils-hooks) –
你节省了我的一天谢谢 – x0v