当前位置: 首页 > ops >正文

【Python】在vscode利用pyinstaller中的.spec文件把py项目打包为.exe实现非py环境下使用的操作步骤

【需要打包的项目结构-简单】

【打包步骤】

【1-将图标以.ico的格式保存在项目中】

可以用.jpg或.png的图像进行重名,注意要和项目在同一个路径下

【2-创建并填写main.sepc文件】

在终端输入以下指令自动创建main.sepc文件,会自动生成标准的文件

pyi-makespec --onefile --noconsoleo main.py

 然后将.sepc文件放于项目外部

main.sepc文件需要修改的内容大致为:

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=['tkinter'],  # 必须添加的隐藏依赖
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)

# ✅ 关键修复点:确保pyz变量正确定义
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,  # ✅ 这里引用的pyz必须已定义
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='BoeMedicalTool',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    icon='medical.ico',  # 图标路径
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

 本项目的main.spec文件如下,需要注意的是main.py和icon图标需要输入其所在的路径,其他的可以不用手动修改,保持默认

# -*- mode: python ; coding: utf-8 -*-


a = Analysis(
    ['D:\\work and document\\medical_report_tool\\main.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=['tkinter'],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name='ReportTool',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon=['D:\\work and document\\medical_report_tool\\tf.ico'],
)
 

【3-保存并开始打包】 

保存编辑好的.spec文件,在终端输入执行命令开始打包

pyinstaller main.spec

如果在打包过程中出现报错,可升级pyinstaller版本再执行一次上述命令打包

pip install --upgrade pyinstaller tuna.tsinghua.edu.cn/simple

打包过程完整日志:

随后在项目所在的同路径形成build和dist文件夹

build文件中为打包的关键部分

dist文件夹中保存.exe执行的应用程序,用户使用的时候双击.exe即可运行项目

为防止在非python环境中的电脑无法使用,本文将build和dist文件夹均作为软件的一部分进行压缩,发给他人使用,经过测试后,发现这样的方法可行,用户可顺利使用,该交付方法最把稳。

交付时必须打包的内容:

http://www.xdnf.cn/news/6284.html

相关文章:

  • 如何通过partclone克隆Ubuntu 22系统
  • 红黑树和递归树
  • 嵌入式学习的第二十一天-数据结构-双向链表
  • 滑动窗口最大值
  • shell脚本练习(6):备份MySQL数据库表
  • 平滑过滤值策略
  • IP地址、端口、TCP介绍、socket介绍、程序中socket管理
  • 【MySQL】第四弹——表的CRUD进阶(二)数据库设计
  • 穿透工具如何保证信息安全?
  • 小白入门:GitHub 远程仓库使用全攻略
  • Stack overflow
  • CSS3 变形
  • 蓝桥杯12届国B 123
  • 机器学习——朴素贝叶斯练习题
  • Docker部署单节点Elasticsearch
  • 互联网大厂Java求职面试实战:Spring Boot到微服务全景解析
  • 【C++】解析C++面向对象三要素:封装、继承与多态实现机制
  • 【漫话机器学习系列】260.在前向神经网络中初始权重(Initializing Weights In Feedforward Neural Networks)
  • 知从科技闪耀2025上海车展:以创新驱动未来出行新篇章
  • Logistics | Days of Inventory vs. Stock Days 【待续】
  • 2.安卓逆向2-adb指令
  • MIFARE DESFire Light 卡C#读写更改卡片密钥源码
  • SLAM定位与地图构建
  • 【专栏启动】开篇:为什么是 Django + Vue3?测试平台的技术选型与架构蓝图
  • 通用软件项目技术报告 - 第一章节检测 - 参考答案
  • DeepSeek执行流程加速指南:跨框架转换与编译优化的核心策略全解析
  • Day118 | 灵神 | 二叉树 | 删点成林
  • 缺乏对新技术的评估和引入机制,如何建立
  • 【C++】set和multiset的常用接口详解
  • 答题pk小程序道具卡的获取与应用