将python文件(.py)打包成可执行文件(.exe),并最大化减小exe大小。亲测可用

本文主要是介绍将python文件(.py)打包成可执行文件(.exe),并最大化减小exe大小。亲测可用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 👋 Hi, I’m @货又星
  • 👀 I’m interested in …
  • 🌱 I’m currently learning …
  • 💞 I’m looking to collaborate on …
  • 📫 How to reach me …
    • README 目录(持续更新中) 各种错误处理、爬虫实战及模板、百度智能云人脸识别、计算机视觉深度学习CNN图像识别与分类、PaddlePaddle自然语言处理知识图谱、GitHub、运维…
    • WeChat:1297767084
    • GitHub:https://github.com/cxlhyx

文章目录

  • 前言
  • 一、exe是什么?
  • 二、将python文件打包为exe文件
    • 1、原因
    • 2、好处
  • 三、步骤流程
    • 1、创建虚拟环境,安装依赖库
    • 2、安装PyInstaller
    • 3、定位到Python脚本所在目录
    • 4、执行打包命令
    • 5、生成exe文件
    • 6、测试exe文件
  • 四、举例
  • 五、`conda create`命令参数
  • 六、`打包命令`的参数


前言

将python文件(.py)打包成可执行文件(.exe),并最大化减小exe大小


一、exe是什么?

EXE文件,即executable file,是Windows操作系统中的一种可执行文件格式

EXE文件是计算机程序的一种文件格式,它包含了程序的代码和数据,以及其他必要的资源,如图标、位图等,用于在Windows操作系统上直接运行程序。当用户双击一个EXE文件时,操作系统会加载该文件到内存中,并开始执行其包含的程序代码。

EXE文件通常由编译器将源代码编译链接后生成,这个过程将高级语言编写的代码转换为计算机能够理解的机器语言。此外,EXE文件还可以是安装包的一部分,用于安装软件到计算机上。安装包通常包含一个或多个EXE文件,以及可能需要的数据文件和其他资源。

总的来说,EXE文件是Windows操作系统中用于运行程序的关键文件类型,它们使得用户可以方便地启动应用程序和执行特定的任务。


二、将python文件打包为exe文件

1、原因

将Python文件打包为exe的原因可能有以下几点:

  1. 便于用户使用:打包后的exe文件可以直接双击运行,用户无需安装Python解释器和依赖库,这大大降低了软件使用的复杂性。
  2. 保护源代码:打包成exe文件可以有效隐藏源代码,防止他人轻易查看或修改代码,从而保护开发者的知识产权。
  3. 提高兼容性:将Python程序打包成exe文件可以确保程序在没有安装Python环境的电脑上也能正常运行,提高了软件的兼容性和便携性。
  4. 简化部署流程:对于需要分发到多台计算机上的应用程序,打包成exe文件可以减少部署时的工作量,因为不需要在每台计算机上单独安装Python环境和依赖包。
  5. 提升用户体验:用户不需要了解程序背后的技术细节,只需要关注程序的功能和界面,从而提供更好的用户体验。
  6. 隐藏依赖关系:打包工具会将Python程序及其所有依赖的库文件一起打包进exe文件中,这样即使用户只安装了部分依赖包,程序也能正常运行。

需要注意的是,虽然打包成exe文件有许多好处,但也有一些潜在的缺点,例如可能会增加文件的大小,以及在某些情况下可能会降低程序的启动速度。此外,打包过程可能需要处理一些依赖关系和兼容性问题。因此,在决定是否将Python文件打包为exe时,需要根据具体的应用场景和用户需求来权衡利弊。

2、好处

将Python文件打包为exe具有多方面的好处,具体如下:

  1. 提高便携性:打包后的exe文件可以在没有安装Python解释器的计算机上运行,这极大地提高了程序的便携性。用户无需关心Python环境的配置,只需双击exe文件即可运行程序。
  2. 保护源代码:exe文件更难以被反向工程,这有助于保护源代码不被轻易泄露或被他人修改。这对于商业软件来说是一个重要的考虑因素。
  3. 提升用户体验:用户不需要安装Python或相关的第三方库,从而简化了使用流程。对于非技术用户来说,这种一键式操作更加友好和方便。
  4. 支持多种格式:打包工具通常能够处理各种类型的Python项目,包括使用PyQt等第三方模块的项目,甚至支持EGG格式的文件。
  5. 压缩可执行文件:生成的exe文件可以使用工具如UPX进行压缩,以减少文件大小,便于传输和部署。
  6. 跨平台兼容性:虽然exe文件是Windows下的可执行文件格式,但打包工具如PyInstaller支持多个操作系统,这意味着你可以在一个系统上构建应用,然后在另一个系统上运行。

此外,打包过程还可以自动化,使得持续集成和部署变得更加高效。

综上所述,将Python文件打包为exe不仅方便了用户,也保护了开发者的利益,同时还提供了更好的用户体验和兼容性。这些好处使得打包成为许多Python开发者发布应用程序时的首选方式。


三、步骤流程

1、创建虚拟环境,安装依赖库

如果在原来的环境上打包,可能会打包很多不需要的库,增大exe的大小,为了最大化减小exe大小,我们选择创建虚拟环境,然后手动安装依赖库。两者的大小有时候相差数十倍,建议还是不要怕麻烦,选择利用虚拟环境打包。
记得删除命令后面所带的注释
anconda

conda create --name myenv python=3.9 --no-default-packages  # 创建虚拟环境,更多参数请看五。
conda info --envs // conda env list  # 查看所有虚拟环境,还会显示所在地址
activate myenv  # windows激活虚拟环境
# source activate myenv  # Linux激活虚拟环境
conda install ---  # 安装依赖库
conda deactivate  # 退出虚拟环境

pip(未测试)

pip install virtualenv  # 安装虚拟环境库
virtualenv myenv  # 创建虚拟环境 
myenv\Scripts\activate  # windows激活虚拟环境
# source myenv/bin/activate  # Linux激活虚拟环境
pip install ---  # 安装依赖库
deactivate  # 退出虚拟环境

2、安装PyInstaller

要安装PyInstaller工具包。可以通过pip命令进行安装,例如在命令行中输入pip install pyinstaller,记得在相应的虚拟环境下安装。

3、定位到Python脚本所在目录

在命令提示符(cmd)中,使用cd命令切换到包含Python脚本的目录。
建议专门开一个文件夹,储存.exe文件,这样直接在该文件夹打包也可,此时许打包的python文件可以使用绝对地址。

4、执行打包命令

在cmd中输入pyinstaller -F setup.py命令,其中-F参数表示覆盖打包,确保每次打包都是最新的版本。更多参数请看

5、生成exe文件

执行上述命令后,PyInstaller会在当前目录下生成一个名为dist的文件夹,在这个文件夹中找到新生成的exe文件。

6、测试exe文件

为了验证exe文件是否能够正确运行,可以将生成的exe文件移动到与Python脚本同一级别的目录,并尝试运行它。

通过上述步骤,即可完成将Python脚本打包成exe文件的过程。这样即使用户没有安装Python环境,也能够运行程序。

四、举例

这里以我的一个项目----------为例
记得删除命令后面所带的注释

conda create --name myenv python=3.9 --no-default-packages # 创建名为myenv,版本为3.9,无默认库的虚拟环境
conda info --envs	# 查看是否创建成功
conda env list	# 查看是否创建成功
activate myenv	# windows激活虚拟环境
pip list	# 查看已安装库列表
pip install numpy	# 安装项目依赖库
pip install matplotlib	#安装项目依赖库
pip install pyinstaller	#安装项目打包依赖库
cd D:\college\exe	# 进入专门储存.exe文件的文件夹
d:	# 进入
pyinstaller -F -w path	# 执行打包命令,path为python文件绝对地址
deactivate	# 退出虚拟环境
conda env remove --name myenv	# 删除虚拟环境
conda info --envs	# 查看是否删除成功
conda env list	# 查看是否删除成功

五、conda create命令参数

conda create命令用于创建新的虚拟环境,并具有多个参数来定制环境的配置。以下是该命令中常用的参数及其说明:

  • -n--name:指定虚拟环境的名称。在这个例子中,名称为myenv
  • python=3.7:指定虚拟环境中Python的版本。在这个例子中,版本为3.7。
  • -c--channel:指定从哪个频道搜索并安装包。默认是Anaconda的base频道。
  • -f--file:指定一个包含包列表和版本的文件,用于批量安装。
  • -d--directory:指定虚拟环境的安装目录。默认是在用户的home目录下的anaconda3/envs文件夹中。
  • --copy:克隆一个已有的环境作为新环境的基础。
  • --no-default-packages:不安装任何默认的包,只创建一个空环境。
  • --yes-y:自动回答提示为“yes”。

通过组合这些参数,你可以根据项目需求创建具有特定配置的虚拟环境。例如,如果你想在名为myenv的新环境中使用Python 3.7版本,并且不安装任何默认的包,可以使用以下命令:

conda create --name myenv python=3.7 --no-default-packages

这将会创建一个干净的虚拟环境,其中只包含指定的Python版本,没有任何额外的包。

六、打包命令的参数

PyInstaller提供了多个参数来定制打包过程。以下是一些常用的参数及其说明:

  • -F:生成单个可执行文件。使用这个参数,PyInstaller会将Python程序打包成一个exe文件。
  • -D:生成一个目录,该目录包含一个可执行文件以及依赖的动态链接库(DLL)等文件。这种方式通常用于调试目的,因为可以更容易地查看和修改依赖文件。
  • -w:运行exe时不显示命令行窗口。这对于图形用户界面(GUI)应用程序很有用,因为它可以避免在视觉上干扰用户。
  • -i:允许你指定生成的exe文件的图标。这可以让你的应用程序看起来更专业。
  • -n:允许你指定生成的打包文件的名称。如果你想要的输出文件名与默认的不同,可以使用此参数。

此外,还有如-h用于显示帮助信息,-a用于不包含Unicode字符集支持,-d用于生成debug版本的可执行文件,-c用于指定使用命令行窗口运行程序(仅对Windows有效),-o用于指定spec文件的生成目录,-p用于设置Python导入模块的路径等其他参数。

了解这些参数可以帮助你根据自己的需求定制化打包Python脚本为exe文件的过程。例如,如果你希望你的程序在运行时不弹出命令行窗口,并且有自己的图标,你可以使用如下命令进行打包:

pyinstaller -i myicon.ico -F myscript.py

这样,你会得到一个带有自定义图标的exe文件,且在运行时不会显示命令行窗口。

这篇关于将python文件(.py)打包成可执行文件(.exe),并最大化减小exe大小。亲测可用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/715165

相关文章

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地