gpt4 book ai didi

python - 使用 PyInstaller --onefile 打包 kivy 时包含 .kv/.json 文件?

转载 作者:行者123 更新时间:2023-12-03 17:15:56 28 4
gpt4 key购买 nike

我有一个非常简单的应用程序(只是一个带有标签的窗口),我正在尝试引导自己完成变成单个可执行文件的过程。这是程序目录:

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 将程序编译为可执行文件,但只使用了他们的 docs 中描述的单文件夹捆绑方法。 ;我希望改用一个文件包方法。到目前为止,当我编译时,应用程序启动但它是黑屏(传统上我在无法加载 main.kv 时看到过这种情况)。我已阅读 this , this , this甚至 PyInstaller docs但没有成功编译为单个可执行文件。这是 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 ) 文件方面做错了什么?

最佳答案

我在一个非常简单的例子中也遇到了这个问题,并且还阅读了您提到的相同文章。同样,我的应用程序在捆绑在文件夹中但不在单个 exe 文件中时工作。
我将 kivy 应用程序类移动到一个单独的 .py 文件中,因此主文件看起来像这样:

import os, sys
from kivy.resources import resource_add_path, resource_find
from myApp import AppClass

if __name__ == '__main__':
if hasattr(sys, '_MEIPASS'):
resource_add_path(os.path.join(sys._MEIPASS))

app = AppClass()
app.run()

myapp.kv 作为数据添加到规范文件中。这对我有用。
我的怀疑是,在python脚本中导入任何其他kivy包之前,kivy资源路径首先需要添加meipass目录。

关于python - 使用 PyInstaller --onefile 打包 kivy 时包含 .kv/.json 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48467917/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com