当前位置: 首页 > news >正文

py2exe,一个神奇的 Python 库

在众多Python打包工具中,py2exe无疑是一款出色的选择。它能够将Python脚本转换成可在Windows平台上独立运行的可执行文件,极大地方便了程序的分发与部署。本文将深入探讨py2exe的特性和使用方法,让你在创建桌面应用程序时更加游刃有余。

安装

要使用 py2exe 将您的 Python 脚本转换为 Windows 上的可执行程序,首先需要确保安装了 py2exe 库。以下是安装步骤:

  1. 通过pip安装:打开命令行界面(Windows的CMD或PowerShell),输入以下命令来通过pip安装 py2exe

    pip install py2exe
    

    确保您的pip是最新版本,以避免安装过程中可能出现的兼容性问题。

  2. 确认安装成功:安装完成后,您可以通过以下命令来确认 py2exe 是否正确安装:

    python -m py2exe --version
    

    如果返回版本号,那么表示 py2exe 已经安装成功。

现在,py2exe 已经准备好帮助您将 Python 脚本打包成可执行程序了。接下来,您可以通过 setup.py 文件来配置和运行打包过程。在实际使用之前,我们将在接下来的章节中详细探讨 py2exe 的基本功能和高级功能。

功能特性

  • 跨平台:能够在Windows环境下将Python脚本转换为可执行文件。
  • 易用性:简单的命令行参数和配置脚本,快速实现打包。
  • 兼容性:生成的可执行文件能够在未安装Python的机器上运行。
  • 扩展支持:支持包含第三方库和模块的Python程序打包。
  • 自定义:允许用户自定义打包过程中的细节,如图标、版本信息等。

基本功能

创建可执行文件

py2exe 的最基本功能是将 Python 脚本转换成 Windows 上的可执行文件(.exe)。以下是转换 Python 脚本的基本步骤:

# setup.py
from distutils.core import setup
import py2exesetup(console=['your_script.py'])# 运行命令行
# python setup.py py2exe

在上述代码中,your_script.py 是你想要转换成可执行文件的 Python 脚本文件名。运行 setup.py 脚本后,py2exe 将生成可执行文件。

单文件打包

py2exe 支持单文件打包模式,即将 Python 脚本和所有依赖打包成一个可执行文件。

# setup.py
from distutils.core import setup
import py2exesetup(windows=['your_script.py'])# 运行命令行
# python setup.py py2exe

在这个例子中,windows 参数用于指定 GUI 程序的入口点。

打包数据文件

如果你的程序需要读取额外的数据文件,你可以使用 data_files 参数包含这些文件。

# setup.py
from distutils.core import setup
import py2exedata_files = [("my_data", ["data_file1.txt", "data_file2.txt"])]setup(console=['your_script.py'], data_files=data_files)# 运行命令行
# python setup.py py2exe

my_data 是一个目录名称,这个目录会被创建在生成的可执行文件所在的目录中,并包含指定的数据文件。

使用自定义图标

你可以为生成的可执行文件指定一个自定义图标。

# setup.py
from distutils.core import setup
import py2exesetup(console=['your_script.py'],options={"py2exe": {"dll_excludes": ["MSVCP90.dll"], "bundle_files": 1}},data_files=[('', ['your_icon.ico'])]
)# 运行命令行
# python setup.py py2exe

在这个例子中,your_icon.ico 是你想要使用的图标文件。bundle_files 参数设置为 1 来确保所有文件被捆绑到一个可执行文件中。

排除不必要的 DLL 文件

有时,你可能想要从打包的应用程序中排除某些不必要的 DLL 文件。

# setup.py
from distutils.core import setup
import py2exesetup(console=['your_script.py'],options={"py2exe": {"dll_excludes": ["MSVCP90.dll"]}}
)# 运行命令行
# python setup.py py2exe

在这里,MSVCP90.dll 是一个示例,你可以在 dll_excludes 列表中添加或删除其他 DLL 文件。

以上是 py2exe 的基本功能介绍,每个功能都配有了相应的代码示例和注释,以便读者能够快速理解和应用。

高级功能

自定义打包脚本

py2exe 允许通过自定义打包脚本来控制打包过程,以适应更复杂的打包需求。

# setup.py
from distutils.core import setup
import py2exesetup(console=['hello.py'],options={"py2exe": {"bundle_files": 1,  # 打包所有文件"compressed": True,  # 压缩打包文件}},
)

使用包含资源的包

当你的程序需要使用外部资源(如图片、数据文件等)时,可以通过 data_files 参数将这些资源包含在打包后的程序中。

# setup.py
from distutils.core import setup
import py2exesetup(console=['hello.py'],data_files=[('image', ['image/icon.png'])],  # 包含图片资源
)

使用自定义图标

你可以为打包后的可执行文件指定一个自定义图标。

# setup.py
from distutils.core import setup
import py2exesetup(console=['hello.py'],options={"py2exe": {"dll_excludes": ["MSVCP90.dll"],"icon_resources": [(1, "app.ico")],  # 自定义图标}},
)

生成单一可执行文件

py2exe 支持生成单一可执行文件,便于分发。

# setup.py
from distutils.core import setup
import py2exesetup(console=['hello.py'],options={"py2exe": {"bundle_files": 2,  # 生成单一可执行文件}},
)

指定排除的 DLL 文件

为减小打包后的程序体积,你可以通过 dll_excludes 参数指定不需要打包的 DLL 文件。

# setup.py
from distutils.core import setup
import py2exesetup(console=['hello.py'],options={"py2exe": {"dll_excludes": ["MSVCP90.dll"],  # 排除特定 DLL}},
)

通过以上高级功能,你可以更灵活地控制 py2exe 打包过程,以适应不同场景下的打包需求。

实际应用场景

将Python脚本转换为可执行文件

使用py2exe可以将Python脚本打包成Windows平台下的可执行文件,方便分发和部署。

# setup.py
from distutils.core import setup
import py2exesetup(console=['your_script.py'])

运行python setup.py py2exe命令后,会在dist目录下生成可执行文件。

创建图形用户界面(GUI)程序

py2exe也支持将使用PyQt或Tkinter等图形库的Python程序转换为可执行文件。

# setup.py
from PyQt4 import uic
from distutils.core import setup
import py2execlass MyGUI:def __init__(self):# 加载UI文件self.ui = uic.loadUi("my_gui.ui")setup(windows=['my_gui.py'])

运行python setup.py py2exe命令后,会在dist目录下生成GUI程序的可执行文件。

打包包含第三方库的脚本

当Python脚本依赖第三方库时,py2exe可以自动将依赖的库一起打包。

# setup.py
from distutils.core import setup
import py2exe
import numpysetup(console=['your_script_with_numpy.py'])

确保第三方库已正确安装,并使用python setup.py py2exe命令打包。

制作安装包

通过py2exe,还可以创建包含可执行文件、依赖库和资源文件的安装包。

# setup.py
from distutils.core import setup
import py2exesetup(windows=['your_app.py'],data_files=['path/to/your/resource/file'],options={'py2exe': {'bundle_files': 1}}
)

使用python setup.py py2exe命令生成安装包,并通过data_files参数包含额外的资源文件。

跨平台部署

尽管py2exe主要用于Windows平台,但它可以协助开发者在其他平台上开发的Python程序,在Windows平台上快速部署。

# setup.py
from distutils.core import setup
import py2exesetup(console=['cross_platform_script.py'])

在Linux或macOS上开发完成后,只需在Windows平台上运行python setup.py py2exe命令即可生成可执行文件。

通过以上实际应用场景,可以看出py2exe为Python程序的分发和部署提供了极大的便利,尤其适用于需要在Windows平台上运行的场景。

总结

py2exe作为Python程序转exe的工具,简化了打包过程,提升了开发效率。它不仅支持基本转换需求,还提供了高级定制选项,满足了不同场景下的打包需求。通过本文的介绍,相信读者已对py2exe有了更深入的了解,能够在实际开发中更好地运用这一工具。

编程、AI、副业交流:https://t.zsxq.com/19zcqaJ2b
领【150 道精选 Java 高频面试题】请 go 公众号:码路向前 。

相关文章:

py2exe,一个神奇的 Python 库

在众多Python打包工具中,py2exe无疑是一款出色的选择。它能够将Python脚本转换成可在Windows平台上独立运行的可执行文件,极大地方便了程序的分发与部署。本文将深入探讨py2exe的特性和使用方法,让你在创建桌面应用程序时更加游刃有余。 安装…...

博途PLC网络连接不上

博途PLC网络连接不上其中的一个原因就是网线接触不好,各种原因都试了,任然连接不上,大家可以把网线拔下,重新插拔或者直接更换一根网线。 1、无线网络网段和PLC连接网段冲突 。。。。...

哪个邮箱最安全最好用啊

企业邮箱安全至关重要,需保护隐私、防财务损失、维护通信安全、避免纠纷,并维持业务连续性。哪个企业邮箱最安全好用呢?Zoho企业邮箱,采用加密技术、反垃圾邮件和病毒保护,支持多因素认证,确保数据安全合规…...

企业微信开发智能升级:AIGC技术赋能,打造高效沟通平台

文章目录 一、AIGC在企业微信开发中的核心价值1. 智能化客服体验2. 自动化工作流程3. 个性化内容推荐4. 深度数据分析与洞察 二、使用AIGC进行企业微信开发的实践路径1. 需求分析与场景定义2. 技术选型与平台搭建3. 模型训练与调优4. 接口对接与功能集成5. 测试与优化 《企业微…...

Apache Doris + Paimon 快速搭建指南|Lakehouse 使用手册(二)

湖仓一体(Data Lakehouse)融合了数据仓库的高性能、实时性以及数据湖的低成本、灵活性等优势,帮助用户更加便捷地满足各种数据处理分析的需求。在过去多个版本中,Apache Doris 持续加深与数据湖的融合,已演进出一套成熟…...

Inno setup pascal编码下如何美化安装界面支持带边框,圆角,透明阴影窗口

inno setup自带的安装界面太老套了,如何实现类似网易,微信那种带界面的安装?一般有两种思路:提供一个单独的下载器,然后通过下载器将你用innosetup 打包后的软件下载下来,然后,静默安装这个包&a…...

SQL语句(以MySQL为例)——单表、多表查询

笛卡尔积(或交叉连接): 笛卡尔乘积是一个数学运算。假设我有两个集合 X 和 Y,那么 X 和 Y 的笛卡尔积就是 X 和 Y 的所有可能组合,也就是第一个对象来自于 X,第二个对象来自于 Y 的所有可能。组合的个数即为两个集合中…...

C++第二十八弹---进一步理解模板:特化和分离编译

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1. 非类型模板参数 2. 模板的特化 2.1 概念 2.2 函数模板特化 2.3 类模板特化 2.3.1 全特化 2.3.2 偏特化 2.3.3 类模板特化应用示例 3. …...

正则表达式的独占模式,懒惰模式等有那些区别

正则表达式的独占模式、懒惰模式(也称为非贪婪模式)和贪婪模式(默认模式)在匹配行为上存在显著的区别。以下是这三种模式的详细解释和区别: 1、贪婪模式(Greedy): 默认情况下&…...

【INTEL(ALTERA)】Quartus® Prime Pro Edition 软件 v24.2 中,哪些 Agilex™ 5 IP 功能的硬件验证有限?

目录 说明 解决方法 说明 如下表所示,Quartus Prime 专业版软件 24.2 版为 Agilex™ 5 IP 或功能提供有限的硬件支持。此外,设备的设备型号、比特流和固件尚未最终确定。 影响 Agilex™ 5 特定功能的已知问题可参阅 Agilex 5 知识库文章搜索。 解决…...

Lua编程

文章目录 概述lua数据类型元表注意 闭包表现 实现 lua/c 接口编程skynet中调用层次虚拟栈C闭包注册表userdatalightuserdata 小结 概述 这次是skynet,需要一些lua/c相关的。写一篇博客,记录下。希望有所收获。 lua数据类型 boolean , number , string…...

2019数字经济公测大赛-VMware逃逸

文章目录 环境搭建漏洞点exp 环境搭建 ubuntu :18.04.01vmware: VMware-Workstation-Full-15.5.0-14665864.x86_64.bundle 这里环境搭不成功。。patch过后就报错,不知道咋搞 发现可能是IDA加载后的patch似乎不行对原来的patch可能有影响,重新下了patch&…...

如何改桥接模式

桥接模式主要是解决 路由功能的 因为NAT多层 主要是网络连接数太多时 然后路由器要好 不然光猫 比差路由要强的 光猫 请注意,对光猫的任何设置进行修改前,请一定要备份光猫的配置文件,并在每次修改前都截图保存原始设置信息!不要…...

江科大/江协科技 STM32学习笔记P13

文章目录 TIM定时中断1、TIM简介计数器PSC预分频器ARR自动重装寄存器 2、定时器类型基本定时器主模式触发DAC 通用定时器高级定时器 3、定时器原理定时中断基本结构预分频器时序计数器时序RCC时钟树 TIM定时中断 1、TIM简介 定时器的基准时钟一般都是主频72MHz,如果…...

loadrunner录制解决提示安全问题

点击页面任意位置,输入: thisisunsafe...

为什么要读写分离?如何实现业务系统读写分离?

信息化水平提升,很多企业已经接受并高频使用多样的业务系统进行日常作业,而在不断的使用过程中,部分行业和业务,如:直播电商、基础制造、公关传媒等,由于自身特点的原因,常常积累了海量的数据。…...

C#基础——类、构造函数和静态成员

类 类是一个数据类型的蓝图。构成类的方法和变量称为类的成员,对象是类的实例。类的定义规定了类的对象由什么组成及在这个对象上可执行什么操作。 class 类名 { (访问属性) 成员变量; (访问属性) 成员函数; } 访问属性:public(公有的&…...

hadoop学习(二)

一.MapReduce 1.1定义:是一个分布式运算程序的编程框架 1.2核心功能:将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 1.3优点 1)易于编程 它简单的实现一些接口&#…...

WXZ196微机消谐装置的运行方式了解一下

WXZ196微机消谐装置是一种用于抑制铁磁谐振的设备,可以在电力系统中快速消除各种频率的铁磁谐振,同时可以区分过电压、铁磁谐振以及单相接地,并给出相应的报警信号。该装置采用高速增强型单片机作为核心元件,对PT开口三角电压进行…...

单链表的建立

一.前言 单链表的建立一共有两种方法,一种是头插法,将元素插入在链表的头部,也叫前插法。另外一种则就是尾插法,将元素插入在链表尾部,也叫后插法。 二. 头插法 首先从一个空表开始,重复读入数据&#xff1…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

反射获取方法和属性

Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...