不同Python版本和wxPython版本用pyinstaller打包文件大小对比

文章探讨了不同Python和wxPython版本组合对打包成exe文件大小的影响,发现wxPython版本升级导致文件体积增加,且64位Python比32位大,Python3.7版本搭配wxPython4.0.2时文件体积最小。
摘要由CSDN通过智能技术生成

1、确定wxPython和Python版本的对应关系

在这里可以找到Python支持的所有wxPython版本:https://pypi.tuna.tsinghua.edu.cn/simple/wxpython/

由于Python从3.6版本开始支持f字符串、从3.9版本开始不支持Windows7操作系统,所以我仅筛选3.6-3.8之间的版本。

应用正则表达式:

.*cp3[6-8].*win32.whl

得到以下版本:

wxPython-4.0.0-cp36-cp36m-win32.whl
wxPython-4.0.0a1-cp36-cp36m-win32.whl
wxPython-4.0.0a2-cp36-cp36m-win32.whl
wxPython-4.0.0a3-cp36-cp36m-win32.whl
wxPython-4.0.0b1-cp36-cp36m-win32.whl
wxPython-4.0.0b2-cp36-cp36m-win32.whl
wxPython-4.0.1-cp36-cp36m-win32.whl
wxPython-4.0.2-cp36-cp36m-win32.whl
wxPython-4.0.2-cp37-cp37m-win32.whl
wxPython-4.0.3-cp36-cp36m-win32.whl
wxPython-4.0.3-cp37-cp37m-win32.whl
wxPython-4.0.4-cp36-cp36m-win32.whl
wxPython-4.0.4-cp37-cp37m-win32.whl
wxPython-4.0.5-cp36-cp36m-win32.whl
wxPython-4.0.5-cp37-cp37m-win32.whl
wxPython-4.0.6-cp36-cp36m-win32.whl
wxPython-4.0.6-cp37-cp37m-win32.whl
wxPython-4.0.7-cp36-cp36m-win32.whl
wxPython-4.0.7-cp37-cp37m-win32.whl
wxPython-4.0.7-cp38-cp38-win32.whl
wxPython-4.0.7.post1-cp36-cp36m-win32.whl
wxPython-4.0.7.post1-cp37-cp37m-win32.whl
wxPython-4.0.7.post1-cp38-cp38-win32.whl
wxPython-4.0.7.post2-cp36-cp36m-win32.whl
wxPython-4.0.7.post2-cp37-cp37m-win32.whl
wxPython-4.0.7.post2-cp38-cp38-win32.whl
wxPython-4.1.0-cp36-cp36m-win32.whl
wxPython-4.1.0-cp37-cp37m-win32.whl
wxPython-4.1.0-cp38-cp38-win32.whl
wxPython-4.1.1-cp36-cp36m-win32.whl
wxPython-4.1.1-cp37-cp37m-win32.whl
wxPython-4.1.1-cp38-cp38-win32.whl
wxPython-4.2.1-cp38-cp38-win32.whl

取一些大版本号,和新增Python支持的版本,还剩这些:

wxPython-4.0.0-cp36-cp36m-win32.whl
wxPython-4.0.2-cp36-cp36m-win32.whl
wxPython-4.0.2-cp37-cp37m-win32.whl
wxPython-4.0.7-cp36-cp36m-win32.whl
wxPython-4.0.7-cp37-cp37m-win32.whl
wxPython-4.0.7-cp38-cp38-win32.whl
wxPython-4.1.0-cp36-cp36m-win32.whl
wxPython-4.1.0-cp37-cp37m-win32.whl
wxPython-4.1.0-cp38-cp38-win32.whl
wxPython-4.1.1-cp36-cp36m-win32.whl
wxPython-4.1.1-cp37-cp37m-win32.whl
wxPython-4.1.1-cp38-cp38-win32.whl
wxPython-4.2.1-cp38-cp38-win32.whl

2、用不同的Python版本wxPython版本打包成exe文件

安装好Python和pyinstaller,这个就不说了。

由于打包32位版的Python程序普遍比64位版体积小很多,所以我就只下载32位版本的Python了。

首先写一个wxPython程序,嗯。。非常简单:

# demo.py

import wx
import sys

app = wx.App()
title = f'window-py{sys.winver}-wx{wx.__version__}'
frame = wx.Frame(None, -1, title)
frame.Center()
frame.Show()
app.MainLoop()

然后运行批处理文件开始打包:

@echo off

set install=-m pip install
set dist=-m PyInstaller -ywsF --noupx demo.py --name

py -3.6-32 %install% wxpython==4.0.0
py -3.6-32 %dist% demo-py36-wx400.exe

py -3.6-32 %install% wxpython==4.0.2
py -3.6-32 %dist% demo-py36-wx402.exe

py -3.7-32 %install% wxpython==4.0.2
py -3.7-32 %dist% demo-py37-wx402.exe

py -3.6-32 %install% wxpython==4.0.7
py -3.6-32 %dist% demo-py36-wx407.exe

py -3.7-32 %install% wxpython==4.0.7
py -3.7-32 %dist% demo-py37-wx407.exe

py -3.8-32 %install% wxpython==4.0.7
py -3.8-32 %dist% demo-py38-wx407.exe

py -3.6-32 %install% wxpython==4.1.0
py -3.6-32 %dist% demo-py36-wx410.exe

py -3.7-32 %install% wxpython==4.1.0
py -3.7-32 %dist% demo-py37-wx410.exe

py -3.8-32 %install% wxpython==4.1.0
py -3.8-32 %dist% demo-py38-wx410.exe

py -3.6-32 %install% wxpython==4.1.1
py -3.6-32 %dist% demo-py36-wx411.exe

py -3.7-32 %install% wxpython==4.1.1
py -3.7-32 %dist% demo-py37-wx411.exe

py -3.8-32 %install% wxpython==4.1.1
py -3.8-32 %dist% demo-py38-wx411.exe

py -3.8-32 %install% wxpython==4.2.1
py -3.8-32 %dist% demo-py38-wx421.exe

3、不同Python/wxPython版本的打包文件大小对比

运行结果:

打包文件大小对比

汇总表格:

Python-32bit 版测试结果:

wx\py3.63.73.8
4.0.08.69 MB--
4.0.28.70 MB8.13 MB-
4.0.78.73 MB8.16 MB8.17 MB
4.1.010.03 MB9.46 MB9.48 MB
4.1.110.10 MB9.54 MB9.55 MB
4.2.1--9.85 MB

Python-64bit 版测试结果:

wx\py3.63.73.8
4.0.011.00 MB--
4.0.211.01 MB10.56 MB-
4.0.711.04 MB10.59 MB10.56 MB
4.1.012.75 MB12.30 MB12.27 MB
4.1.112.84 MB12.40 MB12.37 MB
4.2.0-12.37 MB12.34 MB
4.2.1--12.36 MB

最终结论:

  1. 总体来说,wxPython的版本越高,打包文件体积越大。
  2. 截至目前,wxPython总共有3个minor版本,在不同的minor版本之间文件大小差异较大,不同的patch版本之间文件体积差异较小。
  3. 在相同的Python版本之间,64位Python比32位Python打包文件体积更大。
  4. 在不同的Python版本之间,Python-3.7 版本打包的文件体积最小,其次是 Python-3.8,最后是 Python-3.6。
  5. 最早支持 Python-3.7 的版本是 wxPython-4.0.2,所以用 Python-3.7+wxPython-4.0.2 会得到的文件体积最小。
  • 14
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以按照以下步骤来打包一个wxPython的GUI项目: 1. 安装pyinstaller。 ``` pip install pyinstaller ``` 2. 在终端中进入你的GUI项目的根目录。 3. 运行下面的命令来生成.spec文件。 ``` pyinstaller --name=your_app_name --noconsole --add-data="resources/*:resources/" your_app.py ``` 这个命令会在当前目录下生成一个.spec文件,其中your_app_name替换成你的应用程序名称,your_app.py替换成你的应用程序启动器的名称。 其中,--noconsole 表示不显示控制台窗口,--add-data 参数用于指定需要打包的资源文件,格式为 “资源路径:目标路径”。 4. 打开.spec文件,按照下面的方式修改: ``` # -*- mode: python ; coding: utf-8 -*- block_cipher = None a = Analysis(['your_app.py'], pathex=['/path/to/your_app'], binaries=[], datas=[('resources/*', 'resources')], hiddenimports=['your_module'], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) a.datas += [('path/to/your/icon.ico', '.')] pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='your_app_name', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], upx_include=[], runtime_tmpdir=None, console=False ) ``` 其中,修改pathex为你的应用程序的根目录,datas中添加需要打包的资源文件路径。name修改为你的应用程序名称。 5. 最后,在终端中运行下面的命令来生成可执行文件: ``` pyinstaller your_app_name.spec ``` 这个命令会在当前目录下生成dist文件夹,其中包含可执行文件和所需的资源文件。 注意:如果你的应用程序中使用了第三方库,需要将这些库添加到hiddenimports中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值