- 👋 Hi, I’m @货又星
- 👀 I’m interested in …
- 🌱 I’m currently learning …
- 💞 I’m looking to collaborate on …
- 📫 How to reach me …
前言
将python文件(.py)打包成可执行文件(.exe),并最大化减小exe大小
一、exe是什么?
EXE文件,即executable file,是Windows操作系统中的一种可执行文件格式。
EXE文件是计算机程序的一种文件格式,它包含了程序的代码和数据,以及其他必要的资源,如图标、位图等,用于在Windows操作系统上直接运行程序。当用户双击一个EXE文件时,操作系统会加载该文件到内存中,并开始执行其包含的程序代码。
EXE文件通常由编译器将源代码编译链接后生成,这个过程将高级语言编写的代码转换为计算机能够理解的机器语言。此外,EXE文件还可以是安装包的一部分,用于安装软件到计算机上。安装包通常包含一个或多个EXE文件,以及可能需要的数据文件和其他资源。
总的来说,EXE文件是Windows操作系统中用于运行程序的关键文件类型,它们使得用户可以方便地启动应用程序和执行特定的任务。
二、将python文件打包为exe文件
1、原因
将Python文件打包为exe的原因可能有以下几点:
需要注意的是,虽然打包成exe文件有许多好处,但也有一些潜在的缺点,例如可能会增加文件的大小,以及在某些情况下可能会降低程序的启动速度。此外,打包过程可能需要处理一些依赖关系和兼容性问题。因此,在决定是否将Python文件打包为exe时,需要根据具体的应用场景和用户需求来权衡利弊。
2、好处
将Python文件打包为exe具有多方面的好处,具体如下:
- 提高便携性:打包后的exe文件可以在没有安装Python解释器的计算机上运行,这极大地提高了程序的便携性。用户无需关心Python环境的配置,只需双击exe文件即可运行程序。
- 保护源代码:exe文件更难以被反向工程,这有助于保护源代码不被轻易泄露或被他人修改。这对于商业软件来说是一个重要的考虑因素。
- 提升用户体验:用户不需要安装Python或相关的第三方库,从而简化了使用流程。对于非技术用户来说,这种一键式操作更加友好和方便。
- 支持多种格式:打包工具通常能够处理各种类型的Python项目,包括使用PyQt等第三方模块的项目,甚至支持EGG格式的文件。
- 压缩可执行文件:生成的exe文件可以使用工具如UPX进行压缩,以减少文件大小,便于传输和部署。
- 跨平台兼容性:虽然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
conda install ---
conda deactivate
pip(未测试)
pip install virtualenv
virtualenv myenv
myenv\Scripts\activate
pip install ---
deactivate
2、安装PyInstaller
要安装PyInstaller工具包。可以通过pip命令进行安装,例如在命令行中输入pip install pyinstaller,记得在相应的虚拟环境下安装。
3、定位到Python脚本所在目录
4、执行打包命令
在cmd中输入pyinstaller -F setup.py命令,其中-F参数表示覆盖打包,确保每次打包都是最新的版本。更多参数请看六。
5、生成exe文件
6、测试exe文件
通过上述步骤,即可完成将Python脚本打包成exe文件的过程。这样即使用户没有安装Python环境,也能够运行程序。
四、举例
这里以我的一个项目为例
记得删除命令后面所带的注释
conda create --name myenv python=3.9 --no-default-packages
conda info --envs
conda env list
activate myenv
pip list
pip install numpy
pip install matplotlib
pip install pyinstaller
cd D:\college\exe
d:
pyinstaller -F -w path
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:允许你指定生成的打包文件的名称。如果你想要的输出文件名与默认的不同,可以使用此参数。
了解这些参数可以帮助你根据自己的需求定制化打包Python脚本为exe文件的过程。例如,如果你希望你的程序在运行时不弹出命令行窗口,并且有自己的图标,你可以使用如下命令进行打包:
pyinstaller -i myicon.ico -F myscript.py
这样,你会得到一个带有自定义图标的exe文件,且在运行时不会显示命令行窗口。