文章目录

  • 备份代码
  • 文件分类
  • Python虚拟环境创建(使用Anaconda)
  • 全新环境
  • 克隆已有环境(以免破坏已有环境)
  • 激活环境
  • SPEC文件创建用于pyinstaller封装设置
  • 封装文件夹结构建议
  • SPEC 文件分析
  • 运行成功
  • 复制其他文件
  • 删除pybuild临时文件
  • DeBug
  • 问题汇总


备份代码

文件分类

将代码文件与其他文件用不同文件夹分开。如:

python pyinstaller 多个python文件打包_conda


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文件与安装结果。

python pyinstaller 多个python文件打包_conda_02


对应conda代码:使用时清除回车换行!!!

pyinstaller "F:\****\HymoPlatform\Install\HemodynamicsPlatform_JZ.spec"
--workpath "F:\****\HymoPlatform\Install\pybuild"
--distpath  "F:\****\HymoPlatform\Install\dist"

代码创建

python pyinstaller 多个python文件打包_ci_03

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', 切记:绝对路径

运行成功

python pyinstaller 多个python文件打包_ci_04

复制其他文件

Base文件夹到dist文件夹
ui文件夹到Hymo
radiomics文件夹到Hymo(radiomics来自Anaconda)

删除pybuild临时文件

DeBug

打开命令提示符 (cmd.exe),拽如打包好的exe。如有问题会显示缺失文件。可在SPEC中hiddenimports=[]进行添加。

python pyinstaller 多个python文件打包_conda_05