🗒️使用虚拟环境来解决Pyinstaller打包速度慢的问题
00 分钟
2024-3-28
2024-4-5
type
status
date
slug
tags
summary
category
password
icon
😀
python提供了多种方法用于将普通的.py程序文件编译成exe文件(有时这里的“编译”也称作“打包”)。exe文件即可执行文件,打包后的.exe应用不用依赖python环境,可以在他人的电脑上运行。
pyinstaller是一个第三方模块,专用于python程序的exe打包。此外python还有一些别的方法进行打包,但是pyinstaller打包最强大而且好用。

什么是Pyinstaller?

PyInstaller 是一个在 Windows、GNU/Linux、macOS、FreeBSD、OpenBSD、Solaris 和 AIX 下将 Python 程序冻结(打包)为独立可执行文件的程序。与类似工具相比,它的主要优点是 PyInstaller 与 Python 3.7-3.10 一起工作,由于透明压缩,它构建了更小的可执行文件,它是完全多平台的,并使用操作系统支持加载动态库,从而确保完全兼容。

安装Pyinstaller

详细用法

  • -onefile 或 -F:可选。将脚本打包成单个可执行文件。
  • --onedir 或 -D:可选(默认行为)。将脚本打包成一个包含多个文件的目录。
  • --windowed 或 -w:可选。对于 Windows GUI 应用程序,不显示控制台窗口。
  • --console 或 -c:可选。为 Windows 应用程序显示控制台窗口(默认)。
  • --name 或 -n:可选。指定输出文件的名称。
  • --icon 或 -i:可选。为 Windows 可执行文件指定图标。
  • --add-data:可选。添加非 Python 文件或目录到打包文件中。

-F和-D的区别

-D优点

打包成单个文件夹的形式便于调试,因为你可以清楚地看到pyinstaller将哪些模块文件放到了文件夹中。
当你更改代码,需要用户更新应用时,只需要让用户对于部分内容进行修改。如果你只修改了主程序,没有使用多余的模块,那么就只需要让用户替换里面的exe文件,而不用全部替换(因为更新前后使用的模块是一致的,它们都以多文件的形式放到了文件夹中)。
单个文件夹的状态下,程序的启动速度和打包前差不多。

-D缺点

打包成单个的文件夹后,文件大小可能会更大一些,因为大部分依赖文件没有进行压缩。

-F优点

启动单个exe非常简单,用户只需要点击exe文件就能运行,而无需在一大堆的依赖文件中找到exe文件。并且在经过压缩后,这个exe文件的文件大小会大大减小。

-F缺点

单个exe的启动速度比较慢(通常会慢几秒,且只是启动时的速度,不是运行后的速度),这是因为pyinstaller会在这一段时间中将一些依赖文件写入到一个临时的文件夹(后文介绍该文件夹的调用方式)。
如果你希望添加一些附带文件(比如使用说明README),你还需要额外新建文件夹并将其放进去。

优化加速

创建虚拟环境

打开到CMD,切换到随便一个文件夹中。
notion image
接着输入以下代码用来创建虚拟环境
notion image
会发现他创建了一个文件夹,这里面只有一些基本的PIP,所以还是相当干净的。

激活虚拟环境

进入到test_env\Scripts文件夹,并输入activate来进入虚拟环境
notion image
在这个环境中可以运行许多Python命令,包括PIP,我这里展示了现在所有的第三方库,可以看到环境非常干净。
notion image
安装Pyinstaller和其他第三方库用于打包。
notion image
然后把你的py脚本放在该虚拟环境下,执行打包命令即可。
notion image
 
💡
有关使用上的问题,欢迎您在底部评论区留言,一起交流~
上一篇
GUI界的“HelloWorld”——计算器
下一篇
使用免费的Linux云服务器安装Linux宝塔面板

评论
Loading...