【Python基础】代码如何打包成exe可执行文件
本文收录于 《一起学Python趣味编程》专栏,从零基础开始,分享一些Python编程知识,欢迎关注,谢谢!
文章目录
- 一、前言
- 二、安装PyInstaller
- 三、使用PyInstaller打包
- 四、验证打包是否成功
- 五、总结
一、前言
本文介绍如何使用PyInstaller工具把Python代码打包成exe可执行文件。
这样的话,我们可以把开发完成的Python程序代码,通过exe可执行文件的方式,分享给其他人。
(PS:如果对方是windows系统,则需要在windows环境下打包;如果对象是macOS系统,则需要在macOS环境下打包。否则,对方无法正常安装。)
-
什么是Python?
Python是由荷兰人吉多·范罗苏姆于1990年代初设计的一门编程语言,应用领域非常广泛,尤其在数据分析、人工智能领域,已经成为最受欢迎的程序设计语言之一,比较适合新手学习。
这门编程语言之所以叫Python,意为大蟒蛇,是因为当时有一个电视喜剧《蒙提·派森的飞行马戏团》(Monty Python’s Flying Circus)在热播,很受大家喜欢。
PS:Python语言标准库官方使用手册:https://docs.python.org/zh-cn/3/library/
-
什么是PyInstaller?
PyInstaller是一个在Windows、macOS等平台下将Python程序打包为独立可执行文件的工具,用于在未安装Python的平台上执行Python编写的应用程序。
PyInstaller官网地址:https://pyinstaller.org/en/stable/

二、安装PyInstaller
下面开始安装PyInstaller打包工具。
安装之前,确认一下当前项目对应的python解释器名称(或者开发环境名称)以及使用的python版本信息。
打开开发工具PyCharm,在界面的右上角打开settings中窗口。
之后,在Project 》Python Interpreter中,查看解释器名称和python版本信息。
(PS:建议使用python3.6.x版本,否则打包会报错。)
比如,这里Python解释器名称(或者开发环境名称)为“myblog”,python版本为3.6.13。

之后,在PyCharm界面左下角,打开终端命令行界面,使用命令conda activate + 环境名称,切换conda环境为“myblog”。(PS:默认为base开发环境)
# 切换开发环境
conda activate myblog
之后,使用命令pip install pyinstaller,开始安装PyInstaller打包工具。
# 安装PyInstaller打包工具
pip install pyinstaller

如果出现"Successfully installer"字样,则说明安装成功了。
另外,也可以使用查看pyinstaller版本信息命令,确认是否安装成功。
pyinstaller --version

至此,我们在myblog开发环境中,PyInstaller工具安装完成了。
三、使用PyInstaller打包
PyInstaller打包工具安装完成后,下面介绍如何使用PyInstaller进行打包。
这里以“猫和老鼠”游戏打包为示例,进行介绍。
如图所示,该游戏在myBlog项目工程中,对应的Python文件名称为tomJerry.py。

首先,打开Pycharm的终端命令行窗口。
之后,输入命令conda activate myblog,把开发环境从base切换到myblog。
conda activate myblog
之后,检查一下当前开发环境中,安装的python版本信息。(PS:建议使用python3.6.x版本,否则打包会报错。)
python --version
之后,运行打包命令。
pyinstaller -w -F tomJerry.py
- pyinstaller命令参数说明:
-F 代表打包成一个单独exe文件,默认是打包成一个文件夹;
-w 代表打包程序运行后隐藏控制台窗口;


如图,如果控制台输出"Building EXE …successfully"字样,则说明打包完成了。
四、验证打包是否成功
打包完成后,我们验证一下打包后的程序是否可以正常运行。
首先,我们会发现在项目的目录下面会出现一个dist目录,该目录下面会有一个打包后生成的tomJerry.exe文件。

之后,点击运行tomJerry.exe文件,出现错误提示。

从提示信息可知,程序找不到图片。所以,我们需要把图片拷贝到exe文件同级目录下面。

之后,我们再次点击运行tomJerry.exe文件,程序运行成功,出现猫和老鼠游侠界面。

五、总结
以上介绍了如何使用PyInstaller打包工具把Python代码打包成EXE可执行文件。希望对大家有帮助,谢谢关注。
(PS:本文示例代码,猫和老鼠游戏下载链接:https://blog.csdn.net/u012171005/article/details/140042952)
如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)
相关文章:
【Python基础】代码如何打包成exe可执行文件
本文收录于 《一起学Python趣味编程》专栏,从零基础开始,分享一些Python编程知识,欢迎关注,谢谢! 文章目录 一、前言二、安装PyInstaller三、使用PyInstaller打包四、验证打包是否成功五、总结 一、前言 本文介绍如何…...
Golang | Leetcode Golang题解之第227题基本计算器II
题目: 题解: func calculate(s string) (ans int) {stack : []int{}preSign : num : 0for i, ch : range s {isDigit : 0 < ch && ch < 9if isDigit {num num*10 int(ch-0)}if !isDigit && ch ! || i len(s)-1 {switch preS…...
云端美味:iCloud中食谱与餐饮计划的智能存储方案
云端美味:iCloud中食谱与餐饮计划的智能存储方案 在数字化生活管理中,我们的食谱和餐饮计划是日常饮食健康与乐趣的重要部分。iCloud提供了一个无缝的解决方案,让我们可以在所有设备上存储、同步和访问这些珍贵的信息。本文将详细介绍如何在…...
leetcode:1332. 删除回文子序列(python3解法)
难度:简单 给你一个字符串 s,它仅由字母 a 和 b 组成。每一次删除操作都可以从 s 中删除一个回文 子序列。 返回删除给定字符串中所有字符(字符串为空)的最小删除次数。 「子序列」定义:如果一个字符串可以通过删除原字…...
智慧交通的神经中枢:Transformer模型在智能交通系统中的应用
智慧交通的神经中枢:Transformer模型在智能交通系统中的应用 随着城市化进程的加快,交通拥堵、事故频发、环境污染等问题日益严重。智能交通系统(ITS)作为解决这些问题的关键技术之一,受到了广泛关注。Transformer模型…...
PCIe驱动开发(1)— 开发环境搭建
PCIe驱动开发(1)— 开发环境搭建 一、前言 二、Ubuntu安装 参考: VMware下Ubuntu18.04虚拟机的安装 三、QEMU安装 参考文章:QEMU搭建X86_64 Ubuntu虚拟系统环境 四、安装Ubuntu 下载地址:https://old-releases.ubuntu.com…...
YOLOv10改进 | Conv篇 | CVPR2024最新DynamicConv替换下采样(解决低FLOPs陷阱)
一、本文介绍 本文给大家带来的改进机制是CVPR2024的最新改进机制DynamicConv其是CVPR2024的最新改进机制,这个论文中介绍了一个名为ParameterNet的新型设计原则,它旨在在大规模视觉预训练模型中增加参数数量,同时尽量不增加浮点运算&#x…...
变革设计领域:Transformer模型在智能辅助设计中的革命性应用
变革设计领域:Transformer模型在智能辅助设计中的革命性应用 在人工智能技术的推动下,智能辅助设计(Intelligent Assisted Design, IAD)正逐渐成为现实。Transformer模型,以其卓越的处理序列数据的能力,为…...
Spring——配置说明
1. 别名 别名:如果添加了别名,也可以使用别名获取这个对象 <alias name"user" alias"user2"/> 2. Bean的配置 id:bean 的唯一标识符,也就是相当于我们学的对象名class:bean 对象所对应的…...
禁用华为小米?微软中国免费送iPhone15
微软中国将禁用华为和小米手机,要求员工必须使用iPhone。如果还没有iPhone,公司直接免费送你全新的iPhone 15! 、 这几天在微软热度最高的话题就是这个免费发iPhone,很多员工,收到公司的通知。因为,登录公司…...
nginx初理解
没有ngix时,有两台服务器,供访问 1. 现在有两台服务器上同样的路径下都放了一个, 都能通过ip加端口访问到页面 后端项目 (查看tomcat中的配置中的 server.xml,能找到项目路径) tomacat 也都有 两个…...
FreeCAD源码分析:属性系统
按照面向对象设计(Object-Oriented Design, OOD)的信条,OOD大体上包括两方面的内涵:一方面,需要将业务数据抽象成(树状/层状)数据对象,这就是所谓的数据对象模型(Data Object Model);另一方面就是职责的分摊与聚合&…...
C++入门 模仿mysql控制台输出表格
一、 说明 控制台输出表格,自适应宽度 二、 源码 #include <iostream> #include <map> #include <string> #include <vector>using namespace std;void printTable(vector<vector<string>> *pTableData) {int row pTableDa…...
SpringBoot新手快速入门系列教程五:基于JPA的一个Mysql简单读写例子
现在我们来做一个简单的读写Mysql的项目 1,先新建一个项目,我们叫它“HelloJPA”并且添加依赖 2,引入以下依赖: Spring Boot DevTools (可选,但推荐,用于开发时热部署)Lombok(可选,…...
开源大势所趋
一、开源项目的发展趋势 技术栈多样化与专业化:随着技术的不断进步,开源项目涵盖了从云计算、大数据、人工智能到区块链、物联网等各个领域,技术栈日益丰富和专业化。这种趋势使得开发者能够根据自己的需求选择最适合的技术工具,促…...
智能无人机飞行控制系统:基于STM32的设计与实现(内附资料)
摘要 智能无人机的飞行控制系统是确保无人机安全、高效运行的核心。本文将探讨基于STM32微控制器的智能无人机飞行控制系统的设计与实现,包括系统架构、关键组件选择、控制算法开发以及代码实现。 1. 引言 智能无人机在军事侦察、物流配送、环境监测等多个领域展…...
centos磁盘空间满了-问题解决
报错问题解释: CentOS系统在运行过程中可能会出现磁盘空间不足的错误。这通常发生在以下几种情况: 系统日志文件或临时文件过大导致磁盘空间不足。 安装了大量软件或文件而没有清理无用文件。 有可能是某个进程占用了大量磁盘空间。 问题解决方法&a…...
宝塔:如何开启面板ssl并更新过期ssl
1、登录宝塔面板 > 前往面板设置 > 最上方的安全设置 > 面板SSL > 面板SSL配置 打开后先查看自签证书的时间,如果时间是已经过期的,就前往这个目录,将该目录下所有文件都删掉 重新回到面板SSL配置的位置,打开后会看到…...
大白话讲解AI大模型
大白话讲解大模型 大模型的发展重要大模型发展时间线 大模型的简单原理-训练⼤模型是如何训练并应⽤到场景中的?如果训练私有化模型 模型:model 语料库:用于训练模型的数据 大模型的发展 详细信息来源:DataLearner 2022年11月底…...
pandas+pywin32操作excel办公自动化
import pandas as pd import re import win32com.client as win32 from win32com.client import constants import os import os.path as osp #读取表格 pathos.getcwd() fposp.join(path,fuck_demo.xlsx) dfpd.read_excel(fp,header1,usecols[序号,光缆段落名(A端…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
