解决pyinstaller打包exe运行程序较大的问题

说明

使用 pyinstaller 进行打包,会把当前使用的 Python 环境所带的包进行全部打包,虽然 pyinstaller 自带一些功能可以去除没有使用的包,但操作相对麻烦,这里并不讲述这种方法。本博客讲述使用 pipenv 来解决打包问题过大的方法,pipenv 是一款 Python 虚拟环境管理工具,它主要解决两方面的问题:

  1. requirements.txt依赖管理的局限
  • 使用 requirements.txt 管理依赖的时候可能会出现版本不确定的构建问题。
  1. 多个项目依赖不同版本第三方工具的问题
  • 例如,应用程序A需要特定模块的 1.0 版本但应用程序B需要该模块的 2.0 版本,当我们在A和B应用程序间切换时,需要不断检测、卸载、安装该模块。这意味着只安装一个版本的模块可能无法满足每个应用程序的要求,因此需要创建虚拟环境来将 A、B 应用程序所需的第三方工具包分隔开来。

打包过程

1.安装 pipenv

pipenv 的安装依赖于 pip,如果没有配置和安装好 pip,需要先安装 pip。如果系统中是 Python 3,那么可以直接使用 pip3 进行安装。

pip install pipenv

安装完成 pipenv 之后,就可以在命令行使用 pipenv 命令进行一系列操作。

2.pipenv 常用命令

Commands:

  • check 检查安全漏洞
  • graph 显示当前依赖关系图信息
  • install 安装虚拟环境或者第三方库
  • lock 锁定并生成Pipfile.lock文件
  • open 在编辑器中查看一个库
  • run 在虚拟环境中运行命令
  • shell 进入虚拟环境
  • uninstall 卸载一个库
  • update 卸载当前所有的包,并安装它们的最新版本

例如

pipenv shell   # 进入当前路径下的虚拟环境

Options:

  • –where 显示项目文件所在路径
  • –venv 显示虚拟环境实际文件所在路径
  • –py 显示虚拟环境Python解释器所在路径
  • –envs 显示虚拟环境的选项变量
  • –rm 删除虚拟环境
  • –bare 最小化输出
  • –completion 完整输出
  • –man 显示帮助页面
  • –three / --two 使用Python 3/2创建虚拟环境(注意本机已安装的Python版本)
  • –python TEXT 指定某个Python版本作为虚拟环境的安装源
  • –site-packages 附带安装原Python解释器中的第三方库
  • –jumbotron An easter egg, effectively.
  • –version 版本信息
  • -h, --help 帮助信息

例如

pipenv --venv         #  显示虚拟环境实际文件所在路径

创建打包的虚拟环境

在命令行创建虚拟环境

使用命令

 pipenv install 

进行创建,会在当前创建目录下生成两个文本文件。
生成的文本文件

进入虚拟环境

使用命令

pipenv shell

进入虚拟环境,当前虚拟环境相当于拥有命令行功能和一个无第三方扩展库的 Python 环境,可以使用

pip list

进行查看已安装的包。

安装 pyinstaller

在虚拟环境中仍是使用 pyinstaller 进行打包,之不过通过虚拟环境,接下来可以安装项目依赖的那些包,对于项目不使用的包,可以不进行安装。

安装项目依赖包

  1. 可以使用 pip 命令进行逐个包的安装
  2. 或者导出项目依赖文件 requirements.txt 进行一键安装包,项目方法在此不再赘述。

进行打包

在虚拟环境中使用 pyinstaller 进行打包,通常在虚拟环境中进行打包的 exe 可执行文件会较之前文件会小很多,如果是对比 Anaconda 等环境会差别更大,并且运行速度也得到了很大提升。
pyinstaller 常用打包命令:

# 进行打包并配置图标
pyinstaller -F -i image.ico exam.py
  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值