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

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...