pyinstaller打包exe应用程序【乘法计算过程演示】

1. 环境准备

  • upx:压缩安装包的大小 https://github.com/upx/upx 下载后放在 D:\path\Anaconda3\envs\<pkg>\Scripts\ 打包的时候会看到:
在这里插入图片描述
  • 新建一个干净的环境,只安装项目必须的包,减少打包的大小
  • pip install pyinstaller
  • 自己编写的import代码文件需要放在 D:\path\Anaconda3\envs\<pkg>\Lib\site-packages

2. 路径写法

代码内所有的资源路径需要调用以下函数获取,防止打包的时候找不到

代码语言:javascript
复制
# 生成资源文件目录访问路径
def resource_path(relative_path):
    if getattr(sys, 'frozen', False):  # 判断sys中是否存在frozen变量,即是否是打包程序
        base_path = sys._MEIPASS  # sys._MEIPASS在一些编辑器中会报错,不用理会
    else:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

参考:https://blog.csdn.net/tm_yuyue/article/details/130472040

3. 打包

激活虚拟环境,执行打包

代码语言:javascript
复制
Pyinstaller -F -w -i xlogo.ico main.py
在这里插入图片描述
在这里插入图片描述

几百行代码,打包后是30M,还是比较大

  • 打开exe后发现图片等资源没打包进去,编辑main.spec文件 修改pathex=[r'D:\gitcode\Python_learning\qt\multiply_show']项目路径 修改datas=[('xlogo.ico', './'), ('qrcode_for_michael.jpg', './') ] 元组内容是(文件相对路径,文件的目录)
代码语言:javascript
复制
# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(
['main.py'],
pathex=[r'D:\gitcode\Python_learning\qt\multiply_show'],
binaries=[],
datas=[('xlogo.ico', './'),
('qrcode_for_michael.jpg', './')
],
hiddenimports=[],
hookspath=[],
hooksconfig={},
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='main',
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=['xlogo.ico'],
)

再执行 pyinstaller main.spec

在这里插入图片描述


这是第一个打包制作的电脑小程序,记录一下。

程序下载github地址 https://github.com/kobe24o/multiplication_calculation/releases

程序演示视频:

使用python的turtle包进行乘法动画演示