我有一个非常简单的应用程序(只是一个带标签的窗口),我正在尝试逐步将其转换为单个可执行文件。这是程序目录:
brainfreeze/
main.py # simple app
main.kv # kv language style sheet
config/
settings.json # json settings panel data (F1 bound)
saving_to/
(empty at start)
我已经成功使用PyInstaller将程序编译为可执行文件,但只采用了他们文档中描述的一个文件夹束方法; 我希望改为使用单个文件束方法。到目前为止,当我编译时,应用程序启动但是出现黑屏(传统上,当无法加载main.kv
时,会出现这种情况)。我阅读了这篇文章,这篇文章,这篇文章,甚至是PyInstaller的文档,但在成功编译成单个可执行文件方面却没有得到任何运作良好的解决方案。以下是prog_test.spec:
# -*- mode: python -*-
from kivy.deps import sdl2
from kivy.deps import glew
block_cipher = None
a = Analysis(['..\\brainfreeze\\main.py'],
pathex=['H:\\TestBed\\single_exe_test'],
binaries=[],
data=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
a.datas += [('../brainfreeze/main.kv', 'DATA'), ('../brainfreeze/config/settings.json', 'DATA')]
exe = EXE(pyz, Tree('../brainfreeze/'),
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
name='prog_test',
debug=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True)
我很好奇是不是
a.datas
的添加方法引起了问题,因为所有的例子都有 3 个索引,而文档只有 2 个索引。我的命令序列如下:# from the 'saving to' directory
python -m PyInstaller --onefile --name prog_test ../brainfreeze/main.py
# alter the prog_test.spec to the above
python -m PyInstaller --onefile prog_test.spec
我做错了什么,才能够包含支持(
.kv,.json
)文件?
pyinstaller --clean -F --add-data="myapp.kv:." myApp.py
,而不必担心规范文件。 - badams