添加Selenium库后Flet打包Windows应用运行报错求助
解决Flet打包Windows exe后运行AssertionError问题
问题分析
从报错栈来看,问题出在trio库的_path.py模块的断言失败。这是因为Flet自带的打包工具(基于serious-python)生成的exe在临时运行环境中,路径检测触发了trio内部的断言逻辑,而本地用flet run运行时环境正常。
解决方案
1. 优先升级Flet版本
0.20.2版本存在已知的打包兼容性问题,升级到最新稳定版大概率能解决该问题:
pip install --upgrade flet
升级完成后重新执行打包命令:
flet build windows
2. 修复trio路径断言问题
如果升级后仍报错,可在代码开头添加补丁,跳过trio的路径断言检查:
import sys import functools # 仅在打包后的exe环境中生效 if hasattr(sys, '_MEIPASS'): import trio._path # 替换断言装饰器,跳过路径检查 original_decorator = trio._path.decorator @functools.wraps(original_decorator) def patched_decorator(func): def wrapper(*args, **kwargs): return func(*args, **kwargs) return wrapper trio._path.decorator = patched_decorator # 之后再导入Flet和Selenium模块 import flet as ft from selenium import webdriver
3. 改用PyInstaller手动打包
如果Flet自带的build工具仍存在问题,尝试用PyInstaller手动打包:
- 安装PyInstaller:
pip install pyinstaller
- 执行打包命令(替换
main.py为你的入口文件,chromedriver.exe为你的Selenium驱动路径):
pyinstaller --onefile --windowed --add-data "chromedriver.exe;." main.py
- 打包完成后,将Selenium驱动(如chromedriver.exe)复制到生成的exe同目录下。
4. 检查杀毒软件拦截
报错路径指向系统临时文件夹,可能被Windows Defender或第三方杀毒软件拦截,尝试临时关闭杀毒软件后重新运行exe。
内容的提问来源于stack exchange,提问作者caman
相关产品推荐
相关产品推荐

