KivyMD Python程序打包EXE失败求助(PyInstaller/cx_Freeze)
Kivy/KivyMD程序打包EXE失败:"Could not find a window provider"问题求助
我尝试用基于PyInstaller的auto-py-to-exe工具,将依赖Kivy、KivyMD模块的Python程序打包为EXE文件,打包流程可完成,但运行生成的文件时会抛出**"Could not find a window provider"**错误。
已做的尝试:
- 将main.py目录下所有文件添加至auto-py-to-exe的“附加文件”菜单
- 在“高级设置->隐藏模块”中填入项目所用全部模块名称
- 程序本身运行无异常
- 查阅大量资料、教程后仍未解决,改用Python 3.7 + cx_Freeze编写setup配置文件,打包同样失败
作为首次尝试生成EXE的开发者,不确定PyInstaller与cx_Freeze哪种工具更适配Kivy/KivyMD项目,恳请各位提供帮助!
附auto-py-to-exe生成的PyInstaller配置命令
pyinstaller --noconfirm --onedir --console --add-data "C:/Users/User/source/repos/RefineryKVMD/bdhandle.py;." --add-data "C:/Users/User/source/repos/RefineryKVMD/main_widget.py;." --add-data "C:/Users/User/source/repos/RefineryKVMD/Mainwidget.kv;." --add-data "C:/Users/User/source/repos/RefineryKVMD/Popups.kv;." --add-data "C:/Users/User/source/repos/RefineryKVMD/Refinaria.png;." --add-data "C:/Users/User/source/repos/RefineryKVMD/requirements.txt;." --add-data "C:/Users/User/source/repos/RefineryKVMD/TimesSeriesGraph.py;." --add-data "C:/Users/User/source/repos/RefineryKVMD/Lib;Lib/" --add-data "C:/Users/User/source/repos/RefineryKVMD/Scripts;Scripts/" --add-data "C:/Users/User/source/repos/RefineryKVMD/venv;venv/" --hidden-import "kivy" --hidden-import "kivymd" --hidden-import "main_widget" --hidden-import "pyModbusTCP" --hidden-import "threading" --hidden-import "time" --hidden-import "datetime" --hidden-import "random" --hidden-import "TimesSeriesGraph" --hidden-import "bdhandle" "C:/Users/User/source/repos/RefineryKVMD/main.py"
附cx_Freeze的setup配置代码
import sys from cx_Freeze import setup, Executable from kivy.lang.builder import Builder Builder.load_file('Mainwidget.kv') Builder.load_file('Popups.kv') from kivy.uix.popup import Popup from kivymd.app import MDApp from kivymd.uix.screen import MDScreen from kivy.clock import Clock from kivymd.uix.boxlayout import BoxLayout from main_widget import Main_widget, ScanPopup, ModbusPopUp from pyModbusTCP.client import ModbusClient from kivy.core.window import Window from threading import Thread from time import sleep from datetime import datetime from kivy.uix.label import Label import random from kivymd.uix.snackbar import Snackbar from kivy_garden.graph import LinePlot from TimesSeriesGraph import TimeSeriesGraph from bdhandle import BDHandle base = None if sys.platform == "win32": base = "Win32GUI" executables = [ Executable("main.py", base=base) ] buildOptions = dict( packages = [], includes = ["kivy","kivymd","bdhandle","threading","main_widget","time","datetime","random","TimesSeriesGraph"], include_files = [], excludes = [] ) setup( name = "Refinery", version = "1.0", description = "Refinery supervisory", options = dict(build_exe = buildOptions), executables = executables )
内容的提问来源于stack exchange,提问作者caio_alBR
相关产品推荐
相关产品推荐

