一文学会使用 PyInstaller 将 Python 脚本打包为 .exe 可执行文件

文章目录

  • 前言
  • 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
  • --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.7Python 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 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(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 可执行文件。

个人简介

👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

📖 保持关注我的博客,让我们共同追求技术卓越。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/212626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SpringBoot教程】SpringBoot 创建定时任务(配合数据库动态执行)

作者简介:大家好,我是撸代码的羊驼,前阿里巴巴架构师,现某互联网公司CTO 联系v:sulny_ann(17362204968),加我进群,大家一起学习,一起进步,一起对抗…

transformer模型结构|李宏毅机器学习21年

来源:https://www.bilibili.com/video/BV1Bb4y1L7FT?p4&vd_sourcef66cebc7ed6819c67fca9b4fa3785d39 文章目录 概述seq2seqtransformerEncoderDecoderAutoregressive(AT)self-attention与masked-self attentionmodel如何决定输出的长度…

【亲测有效】支持横竖屏 微信小程序video禁止进度条拖动,微信小程序遮罩进度条,

背景&#xff1a;部分课程禁止客户拖动视频进度条直至播放结束 红色是遮罩区域遮罩区域 实际遮罩效果&#xff08;有一个很浅的阴影区域&#xff09; 实现代码 .wxml文件 <video enable-progress-gesture"false" ><cover-view class"cover">…

基于深度学习的yolov7植物病虫害识别及防治系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介简介YOLOv7 系统特性工作流程 二、功能三、系统四. 总结 一项目简介 # YOLOv7植物病虫害识别及防治系统介绍 简介 该系统基于深度学习技术&#xff0c;采…

Seata配置

参考教程 seata 分布式事务的环境搭建与使用 Seata 1.4.0 nacos配置和使用&#xff0c;超详细 Seata 1.4.2 的安装 Nacos的配置和使用 官网下载地址 本文以v1.4.1为例 1.数据库及表的创建 创建seata数据库&#xff0c;创建以下表&#xff08;右键连接-》新建数据库seata-》…

windows系统proteus中Ardunio Mega 2560和虚拟机上Ubuntu系统CuteCom进行串口通信

在文章利用proteus实现串口助手和arduino Mega 2560的串口通信-CSDN博客 中&#xff0c;实现了windows系统的proteus中Ardunio Mega 2560和SSCOM通过虚拟串口进行通信。虚拟串口的连接示意图如下图所示。 在文章windows系统和虚拟机上ubuntu系统通过虚拟串口进行通信-CSDN博客…

3DMAX关于显示驱动问题的解决方法大全

3DMAX与显卡驱动有关的问题主要有以下几种情况&#xff1a; 1.3DMAX启动弹出这样的界面&#xff1a; 2.主工具栏按钮不显示&#xff0c;或者鼠标移上去才显示&#xff08;刷新问题&#xff09;。 3&#xff0e;视口菜单不显示或显示不全。 问题分析&#xff1a; 首先&#x…

安全基础从0开始

文章目录 常见名词小实战 网站搭建小实战抓包模拟器状态码返回值网站搭建WEB应用安全漏洞 数据包&封包&信息收集**参考点** 常见名词 前后端&#xff0c;POC/EXP&#xff0c;Payload/Shellcode&#xff0c;后门/Webshell&#xff0c;木马/病毒&#xff0c; 反弹&…

基于ssm应急资源管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本应急资源管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

排序算法之七:归并排序(递归)

基本思想 基本思想&#xff1a; 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1…

C++:this指针

目录 前言 成员函数返回this指向的对象本身时&#xff0c;为什是返回引用类型&#xff1f; 成员函数返回this对象本身时&#xff0c;内部通常会通过拷贝构造函数来创建一个临时对象&#xff1f; 总结 前言 c通过提供特殊的对象指针&#xff0c;this指针 指向被调用的成员函…

Nodejs 第二十二章(脚手架)

编写自己的脚手架 那什么是脚手架&#xff1f; 例如:vue-cli Angular CLI Create React App 编写自己的脚手架是指创建一个定制化的工具&#xff0c;用于快速生成项目的基础结构和代码文件&#xff0c;以及提供一些常用的命令和功能。通过编写自己的脚手架&#xff0c;你可以…

Linux和Windows环境下如何使用gitee?

1. Linux 1.1 创建远程仓库 1.2 安装git sudo yum install -y git 1.3 克隆远程仓库到本地 git clone 地址 1.4 将文件添加到git的暂存区&#xff08;git三板斧之add&#xff09; git add 文件名 # 将指定文件添加到git的暂存区 git add . # 添加新文件和修改过的…

vs2017+qt5.14.2遇到的问题

1、在安装qt插件后&#xff0c;导入pro文件时&#xff0c;报 msvc-version.conf loaded but QMAKE_MSC_VER isn’t set 修改E:\Qt\Qt5.14.2\5.14.2\msvc2017_64\mkspecs\common\msvc-version.conf文件中添加

RabbitMQ学习笔记10 综合实战 实现新商家规定时间内上架商品检查

配置文件&#xff1a; 记住添加这个。 加上这段代码&#xff0c;可以自动创建队列和交换机以及绑定关系。 我们看到了我们创建的死信交换机和普通队列。 我们可以看到我们队列下面绑定的交换机。 我们创建一个controller包进行测试: 启动&#xff1a; 过一段时间会变成死信队列…

SSM与SpringBoot面试题总结

什么是spring&#xff1f;谈谈你对IOC和AOP的理解。 Spring:是一个企业级java应用框架&#xff0c;他的作用主要是简化软件的开发以及配置过程&#xff0c;简化项目部署环境。 Spring的优点: 1、Spring低侵入设计&#xff0c;对业务代码的污染非常低。 2、Spring的DI机制将…

FPGA设计时序约束十一、others类约束之Set_Maximum_Time_Borrow

目录 一、序言 二、Set Maximum Time Borrow 2.1 基本概念 2.2 设置界面 2.3 命令语法 2.4 命令示例 三、参考资料 一、序言 在Vivado的时序约束窗口中&#xff0c;存在一类特殊的约束&#xff0c;划分在others目录下&#xff0c;可用于设置忽略或修改默认的时序路径分析…

IntelliJ IDEA开启git版本控制的简单教程

这篇文章想要分享一下怎么在IntelliJ IDEA开启版本控制&#xff0c;博主使用的是gitee&#xff0c;首先需要安装git&#xff0c;关于git的安装这里就不介绍了&#xff0c;很简单。 目录 创建git仓库 创建项目 开启版本控制 拉取项目 创建git仓库 首先&#xff0c;需要登录…

MATLAB | 官方举办的动图绘制大赛 | 第四周(收官周)赛情回顾

MATHWORKS官方举办的迷你黑客大赛第三期(MATLAB Flipbook Mini Hack)圆满结束&#xff0c;虽然我的水平和很多大佬还有比较大的差距&#xff0c;但所有奖也算是拿满了&#xff1a; 专家评选前三名&#xff0c;以及投票榜前十&#xff1a;~ 每周的阶段性获奖者&#xff1a; 下面…

【Python】手把手教你用tkinter设计图书管理登录UI界面(三)

上一篇&#xff1a;【Python】手把手教你用tkinter设计图书管理登录UI界面&#xff08;二&#xff09;-CSDN博客 下一篇&#xff1a; 紧接上一篇文章&#xff0c;继续完善项目功能&#xff1a;用户登录。由于老王的注册部分有亿点点复杂&#xff0c;还没完成&#xff0c;但是…