当前位置: 首页 > 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…...

基于服务器使用 apt 安装、配置 Nginx

🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化

iOS 应用的发布流程一直是开发链路中最“苹果味”的环节&#xff1a;强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说&#xff0c;这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发&#xff08;例如 Flutter、React Na…...

AD学习(3)

1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分&#xff1a; &#xff08;1&#xff09;PCB焊盘&#xff1a;表层的铜 &#xff0c;top层的铜 &#xff08;2&#xff09;管脚序号&#xff1a;用来关联原理图中的管脚的序号&#xff0c;原理图的序号需要和PCB封装一一…...

Spring AOP代理对象生成原理

代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】&#xff0c;这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...