BSE电镜多相含量分析软件:PyInstaller打包实战
·
代码写完了,打包成exe给用户。
单文件、无黑框、隐式导入、排除冗余——一次性搞定。
一、基础命令
bash
pip install pyinstaller pyinstaller main.py --onefile --windowed
| 参数 | 作用 |
|---|---|
--onefile |
打包成单个exe |
--windowed |
不显示控制台 |
二、Spec文件核心配置
python
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
hiddenimports = [
'PySide6.QtCore',
'PySide6.QtGui',
'PySide6.QtWidgets',
'qdarkstyle',
'qtpy',
'preprocess',
'seg_multi_otsu',
'morph_opt',
'size_calc',
'draw_result',
'report_export',
]
excludes = [
'PyQt5',
'PyQt6',
'tkinter',
]
a = Analysis(
['main.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=hiddenimports,
excludes=excludes,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='BSE电镜多相分析软件',
debug=False,
strip=False,
upx=True,
console=False,
)
三、重要配置说明
| 配置 | 说明 |
|---|---|
hiddenimports |
手动添加隐式导入的模块 |
excludes |
排除不需要的模块,减小体积 |
upx=True |
使用UPX压缩 |
console=False |
不显示控制台窗口 |
QT_API环境变量(main.py顶部):
python
import os os.environ['QT_API'] = 'PySide6'
四、打包命令
powershell
$env:QT_API='PySide6' pyinstaller build.spec --clean
--clean:清理缓存,重新打包。
五、常见问题
| 问题 | 原因 | 解决 |
|---|---|---|
| 多个Qt绑定冲突 | 同时装PyQt和PySide | excludes排除PyQt5/PyQt6 |
| qtpy模块找不到 | 错误排除了qtpy | 从excludes移除qtpy |
| QLocalServer导入失败 | 打包环境问题 | 改用文件锁实现单实例 |
| 体积过大 | 打包了冗余模块 | 添加excludes排除未用模块 |
下篇预告
下一篇写完整使用流程与最佳实践:全流程操作指南,系列完结。
所有评论(0)