横沥镇做网站,公众号开发中心,做网站要多少钱联系方式,网站建设设计时代创信好文章目录 前言PyInstaller特点跨平台支持自动依赖项处理单文件发布支持图形用户界面#xff08;GUI#xff09;和命令行界面#xff08;CLI#xff09;应用支持多种打包选项 基本用法常用参数其它参数 版本 环境实现步骤安装 PyInstaller创建 Python 脚本使用 PyInst… 文章目录 前言PyInstaller特点跨平台支持自动依赖项处理单文件发布支持图形用户界面GUI和命令行界面CLI应用支持多种打包选项 基本用法常用参数其它参数 版本 环境实现步骤安装 PyInstaller创建 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--iconyour_icon.ico: 指定生成的可执行文件的图标。图标文件通常是 .ico 格式。
pyinstaller --onefile --iconyour_icon.ico your_script.py--hidden-importmodule_name: 手动添加缺失的依赖项
pyinstaller --onefile --requirementsrequirements.txt your_script.py--requirementsrequirements.txt: 指定包含依赖项列表的文件。
pyinstaller --onefile --requirementsrequirements.txt your_script.py其它参数
--clean: 在打包前删除临时文件和输出目录。
--debug: 在调试模式下运行 PyInstaller。
--log-level: 指定日志级别如 --log-levelDEBUG。
-w 是一个命令行选项用于生成无控制台窗口的可执行文件。
-p 用于添加模块搜索路径。版本 环境
Python 2.7Windows 11 家庭中文版
实现步骤
安装 PyInstaller
首先确保你已经安装了 Python。然后打开命令行或终端并运行以下命令安装 PyInstaller
pip install pyinstaller注意由于本人使用的是 Python 2.7Python 2.7 已经在2020年结束了官方支持。然而PyInstaller 3.6.0 是最后一个官方宣布支持 Python 2.x 的版本。因此我们需要指定 PyInstaller的版本否则会安装失败。
pip install pyinstaller3.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 executablerequired 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(nameuMicrosoft.VC90.CRT, languageNone, archuamd64, oldVersion(9, 0, 21022, 8), newVersion(9, 0, 30729, 9635), publicKeyTokenu1fc8b3b9a1e18e3b)]
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 可执行文件。
个人简介 你好我是 Lorin 洛林一位 Java 后端技术开发者座右铭Technology has the power to make the world a better place. 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。 作为一个 Java 后端技术爱好者我不仅热衷于探索语言的新特性和技术的深度还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。 在我的博客上你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法以帮助你更好地掌握Java编程。 我鼓励互动和建立社区因此请留下你的问题、建议或主题请求让我知道你感兴趣的内容。此外我将分享最新的互联网和技术资讯以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进一起探讨技术世界的无限可能性。 保持关注我的博客让我们共同追求技术卓越。