文章目录
- 备份代码
- 文件分类
- Python虚拟环境创建(使用Anaconda)
- 全新环境
- 克隆已有环境(以免破坏已有环境)
- 激活环境
- SPEC文件创建用于pyinstaller封装设置
- 封装文件夹结构建议
- SPEC 文件分析
- 运行成功
- 复制其他文件
- 删除pybuild临时文件
- DeBug
- 问题汇总
备份代码
文件分类
将代码文件与其他文件用不同文件夹分开。如:
Base文件夹中为非Python文件,代码打包好可直接复制到封装的Dist文件中。
虽然datas=[],可以使用,但是个人觉得不好使,尤其在需要创建文件夹时。
Python虚拟环境创建(使用Anaconda)
全新环境
克隆已有环境(以免破坏已有环境)
已有环境VTK_Side37
conda create --clone VTK_Side37 --prefix D:\Software\Anaconda\envs\VTK_Side37_Inst #带路径
conda create -n VTK_Side37_Inst --clone VTK_Side37 #不带路径
激活环境
conda env list # 查看环境
conda activate VTK_Side37_Inst
SPEC文件创建用于pyinstaller封装设置
cd "D:\****\GUI\GUI_V0" # 到想生成的文件夹路径
初始spec文件
pyinstaller -F bin\setup.py
程序结束后,发现当前目录下生成两个文件夹(bulid、dist)和一个文件setup.spec,现在删除两个文件夹,只保留setup.spec文件。
封装文件夹结构建议
在Install文件夹下,储存安装所需SPEC文件与安装结果。
对应conda代码:使用时清除回车换行!!!
pyinstaller "F:\****\HymoPlatform\Install\HemodynamicsPlatform_JZ.spec"
--workpath "F:\****\HymoPlatform\Install\pybuild"
--distpath "F:\****\HymoPlatform\Install\dist"
代码创建
SPEC 文件分析
请参考非常清晰的文章原文链接:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['bin\\setup.py'], # 此列表存放项目设计的所有python脚本文件
pathex=['C:\\Users\\15057\\Desktop\\FlappyBird'], # 此列表为项目绝对路径
binaries=[],
datas=[], # 此列表存放所有资源文件,每个文件是一个2元组元素
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='setup', # 打包程序的名字
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True )
# 此处console=True表示,打包后的可执行文件双击运行时屏幕会出现一个cmd窗口,不影响原程序运行
# 如果想要修改程序图标,使用在EXE()中加入 icon='xxxxx', 切记:绝对路径
运行成功
复制其他文件
Base文件夹到dist文件夹
ui文件夹到Hymo
radiomics文件夹到Hymo(radiomics来自Anaconda)
删除pybuild临时文件
DeBug
打开命令提示符 (cmd.exe),拽如打包好的exe。如有问题会显示缺失文件。可在SPEC中hiddenimports=[]进行添加。