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

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

pam_env.so模块配置解析

在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

基础测试工具使用经验

背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...