阳光大盗 发表于 2023-4-13 18:04:14

python项目生成exe

前言

做了个python的小项目,需要打包为桌面端的exe使用,结果一打包,体积直接上百兆了,研究了下,使用虚拟环境打出的包会更干净小巧。
安装anaconda(用作python的虚拟环境管理工具)


[*]安装:https://repo.anaconda.com/archive/Anaconda3-2023.03-Windows-x86_64.exe
[*]配置anaconda环境变量
win+i 搜索“高级系统设置”,打开
https://img-blog.csdnimg.cn/img_convert/e5c23ce692b87993fa7d2339f96a9bcc.png
点击环境变量
https://img-blog.csdnimg.cn/img_convert/48742cbcf3378942d931336f2c4d4e5d.png
双击系统变量中的Path
https://img-blog.csdnimg.cn/img_convert/f0ea7e7b088c5a61c5fe566ba91a63ae.png
依次添加系统环境变量(需视anaconda安装目录而定):
D:\anaconda
D:\anaconda\Library\mingw-w64\bin
D:\anaconda\Library\usr\bin
D:\anaconda\Library\bin
D:\anaconda\Scripts
https://img-blog.csdnimg.cn/img_convert/6f05d3088c35312b892a1dd3b5c66359.png
[*]依次返回确定保存
创建anaconda虚拟环境


[*]打开anaconda prompt
https://img-blog.csdnimg.cn/img_convert/1ca72e278e25f04b248929c77c790dae.png
[*]创建anaconda虚拟环境:conda create -n env_1 python==3.7.9(可自行选择版本)
[*]验证是否创建成功:python -V
https://img-blog.csdnimg.cn/img_convert/9551e43358ced9f66a92fcbb3279e272.png
[*]常用anaconda命令:
导出虚拟环境的列表:conda env list
导出当前环境的包:conda list
启动/切换至名为name的Python环境:conda activate name
退出虚拟环境:conda deactivate
删除虚拟环境:conda remove -n 环境名 --all
[*]在虚拟环境中安装python打包工具pyinstaller,以及其他自己在项目中使用到的包:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller(国内使用清华源较快)
vscode选择python解释器


[*]打开vscode,按下ctrl+shift+p
[*]输入:Python: Select Interpreter,点击出现的选项
https://img-blog.csdnimg.cn/img_convert/0409aa662cf175be1b21036f50660bba.png
[*]点击:输入解释器路径-查找
https://img-blog.csdnimg.cn/img_convert/53e525a5d4c33de1f87521a874fb9b3a.png
[*]确认选中anaconda安装路径下刚生成的虚拟环境的python.exe文件
https://img-blog.csdnimg.cn/img_convert/4b6e3227b7daf7709edf08b48510b284.png
设置vscode默认终端为cmd


[*]点击选择默认配置文件
https://img-blog.csdnimg.cn/img_convert/de167c2ed96e47c0fef25dfd19da217f.png
[*]点击选中Command Prompt
https://img-blog.csdnimg.cn/img_convert/c442cadabadbb5d7d02cbfaa2ddfa10b.png
[*]关闭vscode,重新使用vscode打开项目,按下shift+ctrl+` ,查看是否使用cmd切换为了虚拟环境
https://img-blog.csdnimg.cn/img_convert/1d9ce6859631089e6549bf8a12be8fa7.png
生成spec文件


[*]spec文件就是pyinstaller打包时的配置文件(语法为python语法),控制台输入命令:pyi-makespec -F -w main.py(main为生成的spec文件的文件名)
[*]编辑spec文件
# -*- mode: python ; coding: utf-8 -*-
def getExeName(): # 获取名字与版本
    import config
    return config.name + '-' + config.version
block_cipher = None
a = Analysis(
    ['main.py'], # 需要打包的py文件
    pathex=[],
    binaries=[],
    datas=[],
    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=getExeName(), # 打包后的名字
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False, # 双击exe是否显示cmd窗口
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon='./img/icon.ico' # 打包的exe图标
)Analysis第一个参数为列表,列表中元素为需要打包的py文件,可自行添加删除,EXE为打包的exe信息,可在此处修改exe的名字、图标等。图标必须为ico格式图片,这里提供一个图片格式转换网站:https://onlineconvertfree.com/zh/convert/svg/ 。
利用spec配置打包


[*]spec文件编辑完成后输入命令:Pyinstaller main.spec(main.spec为刚才生成的配置文件名)
[*]出现下图即为打包成功,在项目的根目录下会生成dist目录,里面即为打包出的exe文件:
https://img-blog.csdnimg.cn/img_convert/5bce746c66d8234575910e4e6f9f765a.png
原文链接:https://xiblogs.top/?id=57

来源:https://www.cnblogs.com/xi12/p/17315707.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: python项目生成exe