PyInstaller将Python脚本打包为.exe可执行文件的步骤详解
作者:Lorin洛林
Python是一门强大而灵活的编程语言,为了方便共享和部署,我们可以将 Python 脚本打包为可执行文件(.exe),这样其他用户就无需安装 Python环境,直接运行可执行文件即可,本文将介绍如何使用PyInstaller 工具实现这一目标,需要的朋友可以参考下
前言
- Python 是一门强大而灵活的编程语言,然而,在与非技术人员分享 Python 脚本时,他们可能不具备安装 Python 解释器的经验。为了方便共享和部署,我们可以将 Python 脚本打包为可执行文件(.exe),这样其他用户就无需安装 Python 环境,直接运行可执行文件即可。本文将介绍如何使用 PyInstaller 工具实现这一目标。
PyInstaller
- PyInstaller是一个用于将Python脚本打包成独立可执行文件的工具。它的目标是方便地将Python应用程序分发给没有安装Python解释器的用户,使得Python脚本可以在没有Python环境的系统上运行。
特点
跨平台支持
- PyInstaller可以在Windows、Linux和MacOS等多个平台上运行,并生成相应平台的可执行文件。
自动依赖项处理
- PyInstaller会自动检测Python脚本的依赖项,并将它们打包到生成的可执行文件中。
单文件发布
- 使用--onefile选项,可以将所有的依赖项打包成一个单独的可执行文件,方便分发和部署。
支持图形用户界面(GUI)和命令行界面(CLI)应用
- PyInstaller适用于各种类型的Python应用,包括包含图形用户界面的桌面应用和命令行工具。
支持多种打包选项
- PyInstaller提供了许多命令行选项,允许用户灵活配置打包过程,例如指定可执行文件的名称、添加图标、手动添加依赖项等。
基本用法
pyinstaller your_script.py
常用参数
--onefile(-F)
: 将所有依赖项打包成一个单独的可执行文件。
pyinstaller --onefile your_script.py
--name your_custom_name
: 指定生成的可执行文件的名称
pyinstaller --name your_custom_name your_script.py
--icon=your_icon.ico
: 指定生成的可执行文件的图标。图标文件通常是 .ico 格式。
pyinstaller --onefile --icon=your_icon.ico your_script.py
--hidden-import=module_name
: 手动添加缺失的依赖项
pyinstaller --onefile --requirements=requirements.txt your_script.py
--requirements=requirements.txt
: 指定包含依赖项列表的文件。
pyinstaller --onefile --requirements=requirements.txt your_script.py
其它参数
--clean: 在打包前删除临时文件和输出目录。
--debug: 在调试模式下运行 PyInstaller。
--log-level: 指定日志级别,如 --log-level=DEBUG。
-w 是一个命令行选项,用于生成无控制台窗口的可执行文件。
-p 用于添加模块搜索路径。
版本 & 环境
- Python 2.7
- Windows 11 家庭中文版
实现步骤
安装 PyInstaller
- 首先确保你已经安装了
Python
。然后,打开命令行或终端,并运行以下命令安装PyInstaller
:
pip install pyinstaller
- 注意:由于本人使用的是
Python 2.7
,Python 2.7
已经在2020年结束了官方支持。然而,PyInstaller 3.6.0
是最后一个官方宣布支持Python 2.x
的版本。因此我们需要指定PyInstaller
的版本,否则会安装失败。
pip install pyinstaller==3.6.0
创建 Python 脚本
- 编写你的 Python 脚本,并确保它能够在你的本地 Python 环境中正常运行。这个脚本将是最终可执行文件的源代码。
- 这里我直接使用最近编写的一个爬虫小程序作为示例。
使用 PyInstaller 打包
$ pyinstaller --onefile -p venv/Lib/site-packages 20231207.py 39 INFO: PyInstaller: 3.6 39 INFO: Python: 2.7.18 39 INFO: Platform: Windows-10-10.0.22621 39 INFO: wrote C:\Users\MQiuj\PycharmProjects\pythonProject\20231207.spec 40 INFO: UPX is not available. 45 INFO: Extending PYTHONPATH with paths ['C:\\Users\\MQiuj\\PycharmProjects\\pythonProject', 'C:\\Users\\MQiuj\\PycharmProjects\\pythonProject\\venv\\Lib\\site-packages', 'C:\\Users\\MQiuj\\PycharmProjects\\pythonProject'] 45 INFO: checking Analysis 46 INFO: Building because pathex changed 46 INFO: Initializing module dependency graph... 46 INFO: Caching module graph hooks... 53 INFO: Caching module dependency graph... 61 INFO: running Analysis Analysis-00.toc 62 INFO: Adding Microsoft.VC90.CRT to dependent assemblies of final executable required by c:\python27\python.exe 115 INFO: Found C:\WINDOWS\WinSxS\Manifests\amd64_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9635_none_acd031d7e1db7c28.manifest 167 INFO: Searching for assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.9635_none ... 167 INFO: Found manifest C:\WINDOWS\WinSxS\Manifests\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9635_none_08e2c157a83ed5da.manifest 168 INFO: Searching for file msvcr90.dll 168 INFO: Found file C:\WINDOWS\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9635_none_08e2c157a83ed5da\msvcr90.dll 168 INFO: Searching for file msvcp90.dll 168 INFO: Found file C:\WINDOWS\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9635_none_08e2c157a83ed5da\msvcp90.dll 168 INFO: Searching for file msvcm90.dll 168 INFO: Found file C:\WINDOWS\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9635_none_08e2c157a83ed5da\msvcm90.dll 219 INFO: Found C:\WINDOWS\WinSxS\Manifests\amd64_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9635_none_acd031d7e1db7c28.manifest 219 INFO: Adding redirect Microsoft.VC90.CRT version (9, 0, 21022, 8) -> (9, 0, 30729, 9635) 240 INFO: Analyzing C:\Users\MQiuj\PycharmProjects\pythonProject\20231207.py 951 INFO: Processing pre-safe import module hook urllib3.packages.six.moves 2621 INFO: Processing module hooks... 2621 INFO: Loading module hook "hook-httplib.py"... 2622 INFO: Loading module hook "hook-encodings.py"... 2865 INFO: Loading module hook "hook-certifi.py"... 2874 INFO: Looking for ctypes DLLs 2874 INFO: Analyzing run-time hooks ... 2875 INFO: Including run-time hook 'pyi_rth_certifi.py' 2877 INFO: Looking for dynamic libraries 2930 INFO: Looking for eggs 2930 INFO: Using Python library C:\WINDOWS\system32\python27.dll 2930 INFO: Found binding redirects: [BindingRedirect(name=u'Microsoft.VC90.CRT', language=None, arch=u'amd64', oldVersion=(9, 0, 21022, 8), newVersion=(9, 0, 30729, 9635), publicKeyToken=u'1fc8b3b9a1e18e3b')] 2933 INFO: Warnings written to C:\Users\MQiuj\PycharmProjects\pythonProject\build\20231207\warn-20231207.txt 2951 INFO: Graph cross-reference written to C:\Users\MQiuj\PycharmProjects\pythonProject\build\20231207\xref-20231207.html 2982 INFO: checking PYZ 2983 INFO: Building because toc changed 2983 INFO: Building PYZ (ZlibArchive) C:\Users\MQiuj\PycharmProjects\pythonProject\build\20231207\PYZ-00.pyz 3257 INFO: Building PYZ (ZlibArchive) C:\Users\MQiuj\PycharmProjects\pythonProject\build\20231207\PYZ-00.pyz completed successfully. 3288 INFO: checking PKG 3288 INFO: Building because toc changed 3288 INFO: Building PKG (CArchive) PKG-00.pkg 3384 INFO: Redirecting Microsoft.VC90.CRT version (9, 0, 21022, 8) -> (9, 0, 30729, 9635) 4298 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully. 4299 INFO: Bootloader c:\python27\lib\site-packages\PyInstaller\bootloader\Windows-64bit\run.exe 4299 INFO: checking EXE 4300 INFO: Building because toc changed 4300 INFO: Building EXE from EXE-00.toc 4300 INFO: Appending archive to EXE C:\Users\MQiuj\PycharmProjects\pythonProject\dist\20231207.exe 4306 INFO: Building EXE from EXE-00.toc completed successfully.
- 注:由于部分依赖没有自动扫描打入可执行文件中,使用
-p
命令手动指定依赖打入。
运行
- 点击
20231207.exe
运行,按照预期运行:
总结
- 本文介绍了
pyinstaller
工具的使用以及常用参数,并结合实际案例进行实战将我们的Pyhton
脚本打包为了.exe
可执行文件。
以上就是PyInstaller将Python脚本打包为.exe可执行文件的步骤详解的详细内容,更多关于PyInstaller Python脚本打包为.exe的资料请关注脚本之家其它相关文章!