You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:35:21