python之Pyinstaller打包exe

pyinstaller库可以很方便的将python代码打包成exe可执行文件。
一般用Pyinstaller打包会同时生成build、dist文件夹和.spec文件,dist文件夹里边是我们最终想要的结果。

1. 安装pyinstaller

pip install pyinstaller

2. 打包为单文件

2.1 pyinstaller参数作用
  • -F 表示生成单个可执行文件
  • -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
  • -w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧
  • -c –console, –nowindowed 使用控制台,无界面(默认)
  • -p 表示你自己自定义需要加载的类路径,一般情况下用不到
  • -i 表示可执行文件的图标
  • 其他参数,可以通过pyinstaller --help查看
2.2 打包命令
pyinstaller -F -i favicon.ico test.py

3. 打包为文件夹

# 将 test.py 打包
pyinstaller test.py

打包的时候,程序同路径下会生成一个同名的.spec文件,我们可以通过修改这个文件来添加我们需要添加资源的文件。

3.1 Spec文件分析

.spec文件中主要包含4部分:Analysis、PYZ、EXE、COLLECT

  • Analysis:主要是分析py文件的依赖信息
  • PYZ:是一个.pyz的压缩包,包含程序运行需要的依赖
  • EXE:是根据上述两项内容而生成的
  • COLLECT:主要是输出信息
3.2 配置文件详解
# -*- mode: python ; coding: utf-8 -*-
  
block_cipher = None
  

a = Analysis(['test.py'], # 要打包.py文件名列表,和test.py同级可以不同添加
       pathex=[], # 项目路径
       binaries=[],
       datas=[('D:\\static\\logo.ico','static'),('D:\\config.ini','.')], # 存放的资源文件(图片、文本等静态文件),将'logo.ico'打包之后放在static目录,将config.ini打包之后放在跟目录
       hiddenimports=['pandas'], # 解析模块时可能会遗漏某些模块,造成打包后执行程序时出现类似No Module named xxx,这时就需要在hiddenimports中加入遗漏的模块
       hookspath=[],
       runtime_hooks=[],
       excludes=[], # 去除不必要的模块import,在excludes中添加此模块
       win_no_prefer_redirects=False,
       win_private_assemblies=False,
       cipher=block_cipher)

# .pyz的压缩包,包含程序运行需要的所有依赖
pyz = PYZ(a.pure, a.zipped_data, 
       cipher=block_cipher)
       
# 根据Analysis和PYZ生成单个exe程序所需要的属性及其配置
exe = EXE(pyz,
     a.scripts,
     exclude_binaries=True,
     name='xxx', # 生成exe文件的名字
     debug=False, # debug模式
     strip=False,
     upx=True,
     console=False, # 是否在打开exe文件时打开cmd命令框
     icon='D:\xx.ico' ) # 设置exe程序图标,ico格式文件(16*16)
     
# 收集前三个部分的内容进行整合,生成程序所需要的依赖包,及资源文件和配置
coll = COLLECT(exe,
        a.binaries,
        a.zipfiles,
        a.datas,
        strip=False,
        upx=True,
        name='hello')

运行pyinstaller xxx.spec生成一个dist文件夹和一个build文件夹,生成的exe文件在dist文件夹中。


  • 📢博客主页:https://blog.csdn.net/qq233325332
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 陌北v1 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌北v1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值