需求分析
最近根据用户提的需求用python做了一个小工具,但是在给客户使用的时候不能直接发送python文件,毕竟让客户去安装python环境,那就离了大谱了。所以这时候就需要把多个py文件带着运行环境打包成EXE可执行文件。
技术实现
这里以window为例,Mac是同样的道理。
一、检测脚本是否正常
1、确保电脑上已经安装好 python,并且已经配置好了运行环境。
2、使用Windows键 + R
打开运行窗口,然后输入cmd
并按Enter键
,或者在开始菜单中搜索“命令提示符”并打开。
3、使用cd
命令切换到存储Python脚本的目录。例如,如果脚本在 C:\Users\xiaodou\Documents
下,你可以输入以下命令:
cd C:\Users\xiaodou\Documents
4、在命令提示符中,输入以下命令运行你的Python脚本,测试脚本是否能正常执行:
python main.py
二、打包单个文件
1、 安装 PyInstaller: 在命令行中运行以下命令安装 PyInstaller:
pip install pyinstaller
2、使用 PyInstaller 打包程序: 在命令行中,进入Python 文件的目录,然后运行以下命令:
pyinstaller --onefile main.py
这个命令将创建一个名为 dist
的目录,这里面会包含了一个独立的.exe
可执行文件。main.py
中的所有依赖项将被打包到这个可执行文件中。
--onefile
:它指定将所有程序文件和依赖项打包成一个单独的可执行文件。这意味着生成的可执行文件包含了你的主程序文件以及所有依赖的模块和库,使得你只需分发一个文件,而不是多个文件。
3、找到生成的可执行文件: 在 dist
目录中找到生成的可执行文件。这个文件的名称通常与你的主程序文件(main.py
)相同,例如,main.exe
。
4、 将可执行文件拷贝到目标计算机: 将生成的可执行文件拷贝到目标计算机上,然后在目标计算机上运行它。由于这是一个独立的可执行文件,不需要安装 Python 环境,可以在没有 Python 的情况下直接运行。
三、去除命令行弹框
这个程序在window系统上执行的时候,会有个命令行弹框,这时候如何把命令行弹框去掉呢?
1、使用--noconsole
选项(建议)
在使用PyInstaller
打包时,你可以使用--noconsole
选项,它会告诉PyInstaller
在Windows上创建一个窗体应用程序而不是控制台应用程序。这样就不会显示命令行窗口。
pyinstaller --onefile --noconsole main.py
2、在脚本中隐藏窗口(只在Windows上有效)
如果你的程序是一个图形界面应用程序,你可以在你的main.py
中加入代码来隐藏命令行窗口。这通常需要使用ctypes
库,例如:
import ctypes
ctypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), 0)
四、指定可执行文件的icon图标
如果我们修改程序的图标和显示图标,可以按照下面的步骤操作:
1、准备一个.ico格式的图标文件,放在py文件的同级目录下。
2、在运行 PyInstaller
命令时,可以通过 --icon
选项指定图标文件,这个图标将用于生成的可执行文件的显示图标和窗口图标。例如:
pyinstaller --onefile --noconsole --icon=xiaodou.ico main.py
注意事项:
- 图标文件通常使用.ico格式。
- 确保指定的图标文件是有效的,否则可能导致
PyInstaller
命令失败。 - 一些窗体库(例如
tkinter
)可能需要特殊处理来设置程序窗口的图标。在这种情况下,你可能需要在程序代码中设置图标。