-
安装 PyInstaller:
python -m pip install -r requirements-build.txt
-
安装依赖(推荐):
pip install -r requirements.txt
此错误发生在 Python 应用代码执行之前。_MEI...\python310.dll 是单文件程序临时解压的运行库路径;仅凭弹窗无法区分临时目录权限、安全软件拦截、运行库依赖或目标系统兼容性问题。
默认构建为单文件 EXE,运行库和语言资源都封装在 EXE 里,启动时解包到临时目录。构建使用独立的 .venv-build 环境,关闭 UPX,构建机需安装 Python 3.10(含 tkinter)和 Python Launcher。
运行 build_exe.bat 后,启动 dist/release-时间戳/WindowsBatchScriptManager.exe。每次写入新发布目录,避免覆盖旧程序旁的用户配置。已有配置文件可复制到新 EXE 同目录。
如需目录版,可运行 build_exe.bat onedir,或在直接使用 spec 前设置 WBSM_ONEFILE=0。目录版分发时需保留 EXE 旁的 _internal 目录。
直接运行:
build_exe.batpython -m PyInstaller build_exe.specpyinstaller --name="WindowsBatchScriptManager" --onefile --windowed --hidden-import=psutil --hidden-import=tkinter main.py--onefile:打包成单个 exe 文件(可选;启动时依赖临时目录)--windowed或--noconsole:不显示控制台窗口(GUI 应用)--hidden-import=psutil:确保 psutil 被正确打包--hidden-import=tkinter:确保 tkinter 相关模块被正确打包--name:指定生成的 exe 文件名
- 单文件模式:
dist/WindowsBatchScriptManager.exe - 单目录模式:
dist/WindowsBatchScriptManager/目录
打包后的 exe 会在同目录下创建配置文件和 logs/ 目录:
dist/
├── WindowsBatchScriptManager.exe
├── WindowsBatchScriptManager_scripts.json (首次运行后自动创建)
├── execution_history.json (首次记录历史后自动创建)
├── notification_config.json (首次配置通知后自动创建)
├── language_config.json (首次切换语言后自动创建)
└── logs/ (首次记录日志时自动创建)
代码已自动处理 PyInstaller 打包后的路径问题:
- 使用
get_app_path()获取正确的程序路径(在 exe 环境中返回 exe 路径) - 所有配置文件保存在 exe 同目录(WindowsBatchScriptManager_scripts.json、execution_history.json、notification_config.json、language_config.json)
- 日志文件保存在 exe 同目录的
logs/文件夹 - 语言字典硬编码在代码中,不依赖外部文件,完全兼容 PyInstaller
- psutil:可选,未安装时功能会降级(使用 netstat/tasklist)
- tkinter:Python 标准库,通常已包含
- 检查是否有隐藏导入缺失,使用
--hidden-import添加 - 检查是否有数据文件缺失,使用
--add-data添加 - Windows Server 等环境:打包时排除 win32com 相关模块(见 README「打包为 EXE」),避免 PyInstaller runtime hook 导致启动崩溃
- 使用
--exclude-module排除不需要的模块 - 考虑使用
--onedir模式(单目录)而不是--onefile
- 这是 PyInstaller 打包的常见问题
- 可以添加数字签名(需要证书)
- 或使用
--key选项加密(需要安装 pyinstaller[encryption])
--onefile模式需要解压临时文件,启动较慢- 可以使用
--onedir模式提高启动速度
打包后建议测试以下功能:
- ✅ 启动和关闭程序
- ✅ 添加、编辑、删除脚本
- ✅ 启动、停止、重启脚本
- ✅ 配置文件保存和加载
- ✅ 日志记录功能
- ✅ 扫描运行中脚本
- ✅ 导出/导入配置
- ✅ 定时任务功能
- 将 exe 文件和 README.md 一起分发
- 首次运行时会在 exe 同目录创建
WindowsBatchScriptManager_scripts.json - 用户可以将 exe 放在任意目录运行
如果有图标文件 icon.ico,在 spec 文件中设置:
icon='icon.ico'或在命令行添加:
--icon=icon.ico如果希望启动更快,可以使用单目录模式:
pyinstaller --name="WindowsBatchScriptManager" --onedir --windowed main.py减少文件大小,排除不需要的模块:
--exclude-module=matplotlib --exclude-module=numpy