./SUSA-SRA
--statistics.py
--ui.py
--icon.ico
先不加任何额外参数直接打包:
python -m nuitka --standalone --enable-plugin=pyside6 --windows-disable-console --windows-icon-from-ico=icon.ico --include-data-files=config.ini=config.ini --output-filename=SUSA-SRA.exe --output-dir=build ui.py
打包完运行 exe,看出什么错再补:
报错 补救参数
ModuleNotFoundError: No module named 'pandas' --include-package=pandas
ModuleNotFoundError: No module named 'openpyxl' --include-package=openpyxl
Qt 插件缺失(图片不显示等) --enable-plugin=pyside6 已覆盖,一般不会出现
某库的数据文件找不到 --include-package-data=包名
Nuitka 对第三方库的处理:
大多数情况不需要手动指定。 Nuitka 会自动分析 ui.py 和 statistics.py 的 import 语句,递归发现所有依赖并打包。
什么情况下需要手动加
情况 原因 解决方式
动态导入(importlib.import_module) Nuitka 静态分析看不到 --include-package=包名
运行时按字符串加载(插件机制) 同上 --include-package=包名
C 扩展库有额外数据文件 Nuitka 可能漏掉 --include-package-data=包名
纯解释型库(无 .pyd/.so) 有时检测不到 --include-package=包名
补全后的命令示例(假设 statistics.py 用了 pandas + openpyxl):
python -m nuitka --standalone --enable-plugin=pyside6 --windows-disable-console --windows-icon-from-ico=icon.ico --include-data-files=config.ini=config.ini --include-package=pandas --include-package=openpyxl --output-filename=SUSA-SRA.exe --output-dir=build ui.py
打包后直接把整个 ui.dist 文件夹分发即可:
ui.dist/
├── SUSA-SRA.exe
├── config.ini ← 用户直接编辑这个
└── ...
standalone(文件夹) onefile(单文件)
config.ini 位置 exe 同级,固定路径 临时目录,每次变
用户可编辑 直接改 改不了(临时目录)
分发方式 发整个文件夹 发一个 exe
启动速度 快(无需解包) 略慢(每次解包)