python文件转为可执行文件(.exe)的详细步骤

article/2025/10/29 12:56:48

目录

六一快乐!!!!

前言

安装所需要的工具

关于“pyinstaller”

安装“pyinstaller”

准备python文件

打包python文件

运行可执行文件

注意事项!!!!!

 关于依赖项和资源(第三方库或者模块,使用到的图片,配置文件)

打包多个文件

结束了???怎么可能,实际打包出现的问题多的要死!!

spec文件

创建spec文件

1.自动创建

2.手动创建

修改spec文件内容 

 打包文件


六一快乐!!!!

前言

       在开发Python应用程序时,将代码打包成可执行文件(.exe)是一个常见的需求。,主要是方便接收者的使用,在没有python环境下也能正常打开的可执行文件。本文打包的python文件为事先写好的一个按钮小程序。资源包将会在代码包中展示出来。下面我将详细讲解从零开始把python文件打包成可执行文件的步骤。

安装所需要的工具

在开始之前,我们需要安装打包的工具,我们将使用pyinstaller”来打包Python文件成可执行文件。

关于pyinstaller”

PyInstaller的主要目标是使Python应用程序的部署变得更加简单。它能够将Python代码和其依赖项打包成一个单个的可执行文件,从而消除了用户在部署和运行Python应用程序时需要手动安装Python解释器和相关依赖项的繁琐过程。

PyInstaller支持跨平台运行,并可以在Windows、Mac和Linux等操作系统上使用。它可以处理包括命令行脚本、图形界面应用程序和多个Python文件等不同类型的Python代码。

安装pyinstaller”

1.打开命令行终端(命令提示符):

win+r打开运行,输入cmd,回车进入命令行终端。

 2.在命令行终端输入下列命令,并按回车确认:

pip install pyinstaller

等待安装完成即可。

准备python文件

在打包之前,确保你的Python文件可以独立运行,并不依赖于动态加载的模块或其他外部资源。如果你的文件有依赖项,确保它们已经被正确地安装并能够在打包后被访问。

打包python文件

1.打开命令行终端,并控制前往到你包含python文件的目录。这里我有个习惯就是我不会先打开命令行再前往目录,我会之间打开我文件所在地,并直接在这个目录下打开命令行终端:

这样子直接就是在这个目录下的命令行终端了。

2.输入打包的指令然后回车运行:

pyinstaller --onefile your_script.py

这将使用pyinstaller工具将Python文件打包成一个独立的可执行文件。

--onefile选项表示将所有依赖项合并为单个可执行文件,而不是生成多个文件。

3. 打包过程可能需要一些时间,等待它完成。

一旦完成,你将在当前目录中看到一个名为dist的文件夹。

运行可执行文件

  1. 进入dist文件夹,你将找到生成的可执行文件,名字为your_script.exe
  2. 将可执行文件复制到你想要运行它的计算机上。
  3. 双击可执行文件,你的Python程序将开始运行。

注意事项!!!!!

  • 如果你的Python程序有外部库的依赖,你需要在打包之前确保这些库已经安装,并使用适当的命令参数告知pyinstaller包含它们。
  • 如果你的程序使用了图形界面(GUI),你可能需要在打包时指定一些特殊的选项来确保界面在打包后可以正常运行。
  • 在打包过程中,pyinstaller将会创建一些临时文件和文件夹,你可以选择在打包完成后手动删除它们。

 关于依赖项和资源(第三方库或者模块,使用到的图片,配置文件)

  1. 依赖项管理:如果你的Python程序依赖于外部库或模块,你需要确保这些依赖项在打包后可以正确访问。可以通过在打包命令中使用--hidden-import参数来指定需要包含的额外模块。

  2. 数据文件和资源:如果你的程序需要访问数据文件或其他资源文件,例如配置文件、图像等,确保这些文件与可执行文件一起打包。你可以使用--add-data参数来指定包含这些文件,例如:

pyinstaller --onefile --add-data "data_files;data_files" your_script.py

打包多个文件

如果你的应用程序由多个Python文件组成,你可以通过将所有文件作为参数传递给pyinstaller命令来打包它们。

pyinstaller --onefile file1.py file2.py

这将打包所有指定的文件,并生成一个单独的可执行文件。

结束了???怎么可能,实际打包出现的问题多的要死!!

       当我第一次用上面方式打包了一次并且成功打包成可执行文件的时候,好爽的感觉!!一打开这个文件,我发现成了“不可执行文件”,路径错误问题,第三方库没有打包过去,环境也没有一起打包过去......

那怎么办啊,语法又记不住,那就用spec文件。

spec文件

spec文件是PyInstaller工具生成的一个配置文件,用于定义和配置打包过程中的各种选项和参数。它是一个纯文本文件,通常与要打包的Python脚本文件位于同一目录中,并以.spec作为文件扩展名。

spec文件包含了一些重要的信息,例如要打包的脚本文件、依赖项、数据文件、资源文件等。通过编辑spec文件,你可以自定义打包过程的行为和结果,以满足特定的需求。

创建spec文件

使用PyInstaller进行打包时,可以通过两种方式生成spec文件:

1.自动创建

在命令行终端中执行以下命令,PyInstaller将自动为指定的Python脚本文件生成一个默认的spec文件:

pyinstaller your_script.py

这将在你python文件所在目录下生成一个名为your_script.spec的spec文件,其中your_script.py是要打包的Python脚本文件名。

2.手动创建

也可以手动创建一个spec文件,并在其中指定需要打包的文件、依赖项和其他选项。创建一个新的文本文件,并使用以下基本结构:

# your_script.spec# 导入所需的模块
import sys
from PyInstaller.utils import collect_data_files# 定义spec文件配置
block_cipher = None
a = Analysis(['your_script.py'],  # 替换成你要打包的Python脚本文件pathex=[],binaries=[],datas=collect_data_files('your_package'),  # 替换成你要包含的数据文件路径hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,cipher=block_cipher)
exe = EXE(pyz,a.scripts,a.binaries,a.zipfiles,a.datas,[],name='your_script',  # 替换成你的可执行文件名debug=False,bootloader_ignore_signals=False,strip=False,upx=True,upx_exclude=[],runtime_tmpdir=None,console=True)

修改spec文件内容 

使用文本编辑器打开.spec文件(your_script_name.spec),并根据需要进行修改。你可以自定义输出文件的名称、要包含的附加文件等选项。

1.添加第三方库:在.spec文件中,使用--add-data选项添加第三方库的文件。

  • 如果第三方库包含非二进制文件(例如Python脚本、配置文件),可以使用--add-data选项来指定库文件相对于脚本文件的路径。

    datas=[('path/to/library/files/*', 'library/files')]
    
  • 如果第三方库包含二进制文件(例如DLL文件、共享库),可以使用--add-binary选项来包含这些文件。指定库文件相对于脚本文件的路径。

    binaries=[('path/to/library/binary', '.')]
    

2. 添加图片路径:在.spec文件中,可以使用--add-data选项添加图片路径,以确保图片文件被正确地打包进可执行文件。

datas=[('path/to/image/file.jpg', '.')]

path/to/image/file.jpg替换为实际的图片路径,并根据需要调整目标文件夹。

 打包文件

编辑好了spec文件,你可以使用以下命令来执行打包过程:

pyinstaller your_script.spec

然后就会根据spec文件中的配置来进行打包文件,生成可执行文件 。

这是我打包一个按钮小程序时用到的spec文件:

# -*- mode: python ; coding: utf-8 -*-block_cipher = Noneimport sys
sys.path.append('d:/python_env/spider2_env/lib/site-packages')import tkinter as tk
from tkinter import messagebox,ttk
from PIL import ImageTk, Image
import os
import randoma = Analysis(['anniu.py'],pathex=['D:/exe/py1'],binaries=[],datas=[('D:\\exe\\py1\\imgs\\a.jpg', 'imgs'), ('D:\\exe\\py1\\imgs\\c.jpg', 'imgs')],hiddenimports=['PIL', 'tkinter', 'random', 'PIL.ImageTk'],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)exe = EXE(pyz,a.scripts,a.binaries,a.zipfiles,a.datas,[],name='anniu',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,upx_exclude=[],runtime_tmpdir=None,console=True,disable_windowed_traceback=False,argv_emulation=False,target_arch=None,codesign_identity=None,entitlements_file=None,
)

 最后成功了。

希望本篇文章能够对你遇到的问题或者学习路上提供帮助!


http://chatgpt.dhexx.cn/article/hnmF930T.shtml

相关文章

一次学会两种方式将 python 打成 exe

python 可以做网站应用,也可以做客户端应用。但是客户端应用需要运行 py 脚本,如果用户不懂 python 就是一件比较麻烦的事情。幸好 python 有第三方模块可以将脚本可以转成 exe 执行。 有些人可能要问了既然可以做成网站,为啥还要做成客户端…

手把手教你把Python代码转成exe

【文末有福利】 很多刚入门的盆友都有疑惑怎么把Python代码转成可执行的exe?,这里行哥统一解决一下这个问题 1.在cmd里安装pyintsaller包2.在cmd里输入打包成exe的命令3.问题总结4. pyintsaller --help5. end 1.在cmd里安装pyintsaller包 第一步安装将Py…

微服务架构服务治理:服务注册中心+服务发布与注册+服务发现与调用+服务监控

目录 一、服务注册中心:注册中心核心功能实现策略 1.注册中心核心功能 2.注册中心实现策略 二、服务发布与注册 三、服务发现与调用 四、服务监控 基本思路:日志埋点 基本目标: 基本定位: 基本策略: 具体实…

zabbix 监控 windows 服务器

zabbix 监控 windows 服务器 步骤: 1.确定zabbix服务器的IP地址和 zabbix 版本 2.官网下载对应版本的zabbix-agent或 3.在要监控的windows服务器中安装zabbix-agent 4.在zabbix配置里添加windows主机第一步:确定zabbix服务器的IP地址和 zabbix 版本 如…

java监听服务器信息,java实时监控服务器状态

java实时监控服务器状态 内容精选 换一换 监控是保持弹性云服务器可靠性、可用性和性能的重要部分,通过监控,用户可以观察弹性云服务器资源。为使用户更好地掌握自己的弹性云服务器运行状态,公有云平台提供了云监控。您可以使用该服务监控您的弹性云服务器,执行自动实时监控…

使用Grafana+Prometheus配置服务器监控

文章目录 前言一、Grafana安装和配置1.安装2.登录 二、Prometheus安装和配置1.安装1.1 配置系统服务 2.查看服务 三、node_exporter安装和配置1.安装1.1 配置系统服务 2.修改prometheus.yml配置3.查看服务 四、Grafana配置prometheus1.配置数据源2.导入首页模板 前言 最近项目…

springboot2.x中的服务监控

想给服务添加一个监控,看看网上各位前辈的,基本都是基于springboot1.x的,springboot升级到2.0以后和1.x还是有很多不一样的,那么2.0以后怎么使用admin监控呢? 先看下图的managment.security.enable,现在已经…

cacti监控服务器性能,cacti监控服务器

cacti监控服务器 内容精选 换一换 博文目录一、Cacti1、Cacti简介2、cacti的作用和特点3、cacti监控的数据类型二、安装配置Cacti监控服务器1、配置LAMP环境2、安装SNMP和RRDtooll工具3、部署英文cacti连接mariadb4、客户端访问英文cacti的WEB界面5、部署中文cacti连接maria 来…

Grafana + prometheus在Centos搭建服务器监控系统(三)--配置监控Nginx

部署并配置nginx-module-vts 参考我之前的文章: Linux下Nginx配置nginx-module-vts_allen的博客-CSDN博客 配置nginx-vts-exporter exporter会收集nginx性能指标的JSON格式数据,并汇总后暴露监控接口给Prometheus。 cd /data/program wget -c https…

shell脚本实现服务监控报警并重启

第一篇 使用crontab指令的shell脚本实现服务监控报警重启 这两天做了一个服务监控报警重启的脚本。本质就是用一个shell命令去监控服务状态,如果宕机就会自动重启,并向指定邮箱发送邮件对管理人员进行提醒,再使用crontab命令设置每隔一分钟…

Zabbix +Grafana 服务器监控体系

无监控,不运维。废话不多说,下面都是干货 官方地址: https://www.zabbix.com/cn/download 声明 使用的是zabbix6.0.7版本。Mysql 8.0.26。演示使用的系统镜像为rocky linux 8.6 --------------------------------------------Zabbix--------…

SpringBoot整合Admin服务监控(图文详细)

SpringBoot整合Admin服务监控组件 1 SpringBootAdmin 简介 1.1 概述 SpringBootAdmin 是一个非常好用的监控和管理的开源组件,该组件能够将 Actuator 中的信息进行界面化的展示,也可以监控所有 Spring Boot 应用的健康状况,提供实时警报功…

windows下的文件服务器监控

windows下的文件服务器监控 一、使用Windows自带的管理工具进行查看当前服务器连接的用户及打开的文件,但是该功能比较简单,无法对文件进行监控,比如什么时间哪个用户连接到共享文件夹对该文件夹的文件进行过什么操作。 二、使用工具软件 …

java项目实现服务器监控,Java实现服务器状态监控

Java实现服务器状态监控 内容精选 换一换 云容器实例(Cloud Container Instance,CCI)服务提供 Serverless Container(无服务器容器)引擎,让您无需创建和管理服务器集群即可直接运行容器。Serverless 是一种架构理念,是指不用创建和管理服务器、不用担心服务器的运行状态(服务…

安利一款免费、开源、实时的服务器监控工具:Netdata

Netdata 是一个免费、开源、实时的服务器监控工具,可以可视化和监控实时数据,如 CPU 使用率、RAM 使用率、负载、SWAP 使用率、带宽使用率、磁盘使用率等。它可以帮助系统管理员了解您的系统或应用程序中正在发生的事情以及刚刚发生的事情。它可以安装在…

Spring Boot服务监控(Prometheus)

哲学 最近看到了一句话:定乎内外之分 辩乎荣辱之境。 一个外国作家也说过: 我生命里的的最大突破之一,就是我不再为别人的看法而担忧。此后,我真的能自由的去做我认为对自己最好的事,只有在我们不需要外来的赞许时&…

几种服务器监控系统,几种服务器监控系统

几种服务器监控系统 内容精选 换一换 设置“云服务器名称”。名称可自定义,但需符合命名规则:只能由中文字符、英文字母、数字及“_”、“-”、“.”组成。如果同时购买多台弹性云服务器,系统会自动按序增加后缀。一次创建多台弹性云服务器时…

无线监控设置smtp服务器,监控smtp服务器

监控smtp服务器 内容精选 换一换 华为云提供了云监控服务,您可以使用该服务监控弹性云服务器,在您开通了弹性云服务器后,云监控服务将自动实时监控并根据您设置的告警预置触发告警和通知,帮助您更好地了解弹性云服务器的各项性能指…

对微服务的监控的两种办法(springbootAdmin、prometheus+grafana)

1、springboot-admin实现对服务的监控 一、actuator客户端(即每一个需要监控的微服务) 1、在业务微服务中引入jar包 <!-- 引入Actuator监控依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-…

语言模型BERT理解

一、BERT概述 BERT是由Google在2018年提出的一种预训练语言模型。BERT的创新之处在于采用了双向Transformer编码器来生成上下文相关的词向量表示。 传统的单向语言模型只考虑了左侧或右侧的上下文信息&#xff0c;而BERT则同时考虑了左侧和右侧的上下文信息&#xff0c;使得生…