关于py2exe和pyinstaller打包对比和总结(个人见解)

本文介绍了Python代码打包成.exe 文件的两种工具。pyinstaller 有多种参数和命令,如 -F 生成单个可执行文件等;py2exe 有一定版本限制,适用于 Python2 或 Python3.4 以下版本。二者各有优劣,需结合自身情况选择。
部署运行你感兴趣的模型镜像

pyinstaller 打包文件
相信很多小伙伴将写的Python代码打包成 .exe文件时使用Python3的Pyinstaller打包工具,下面是pyinstaller的一些参数和命令
pyinstaller -F 文件.py 生成单个可执行文件
pyinstaller -w 文件.py 去掉控制台窗口,对于执行文件没有多大的用处,一般用于GUI面板代码文件
pyinstaller - -icon = 图标路径 表示可执行文件的图标
pyinstaller -c 使用控制台无窗口
pyinstaller -D 生成一个文件夹包括依赖文件
pyinstaller -p 添加Python使用的第三方库
pyinstaller -K 当包含tcl和tk也就是使用tkinter时加上-K参数
例如pyinstaller -F - -icon = 图标文件绝对路径 文件.py
常用的是pyinstaller -F 和pyinstaller -D

py2exe打包文件
py2exe将Python文件打包成.exe文件,py2exe有一定的限制性用在python2版本或者python3.4版本一下

import sys
reload(sys)
sys.setdefaultencoding('utf8')#设置Python2编码为utf8编码 原Python2代码为ASCII编码

具体情况具体修改不能随意而论

# -*- coding:utf8 -*-
#用此代码打包tkinter代码屡试不爽太酷了
from distutils.core import setup
import py2exe
import sys
#设置地柜限制次数
sys.setrecursionlimit(1000000)
if len(sys.argv) == 1:
    sys.argv.append("py2exe")
    sys.argv.append("-q")
setup(windows=[r"文件.py"],
       options = { "py2exe":{"dll_excludes":["MSVCP90.dll","libopenblas_v0.2.20_mingwpy.dll"]}}
      )#没有MSVC90.dll这个动态依赖库会打包不成功,而libopenblas_v0.2.20_mingwpy.dll在我的程序里没有加的话也不会成功,从网上找了一些资料只需要前边的动态库后边不需要。
setup(
version = "  ", #版本号
name = "  ",#名称
description = "  "#描述
zipfile = None#不生成library.zip文件
options =
        {
"py2exe":
                {
                "compressed":1#创建压缩的zip文件大小3:1
                "optimize":0#优化等级 0表示不优化 ,1表示普通优化,2表示额外优化
                "unbuffered":True#使用未缓冲的二进制stderr和stdout
                "bundle_files":1#所有文件打包成一个.exe文件
                "dll_excludes":[]#排除dll文件
                }
        }
)

经过时间可以得出结论:有时候用pyinstaller 打包比较合适,例如就一个可以生成执行的文件,但是发现有时候有黑色闪烁的框,而py2exe不会发生这样的状况,生成的可执行文件并且携带的依赖文件的大小要远比pyinstaller的小。因此,具体情况具体分析,当一种状况不可以的时候,可以去尝试其他的方式来达到相同的目的。例如如图:

pyinstaller打包包含tkinter文件如图:
这里写图片描述

而py2exe打包如图:
这里写图片描述

相比来说:py2exe要小很多,因此看自己对这两种打包工具的认识,结合自己的情况,然后对自己写的代码进行打包,到时候会有一定的成就感。谢谢采纳。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 如何生成包含用户注册功能的 EXE 文件 要生成一个带有用户注册功能的可执行文件 (EXE),可以通过多种工具技术来完成。以下是几种常见的方法及其具体实现方式。 --- #### 方法一:使用 PyInstaller 打包 Python 脚本 如果用户的注册逻辑是由 Python 编写的脚本,则可以借助 `PyInstaller` 工具将其转换为独立的 `.exe` 文件。 通过命令行运行以下指令即可将脚本打包成单一的可执行文件: ```bash pyinstaller -F your_registration_script.py ``` 此操作会将所有的依赖项嵌入到最终的 `.exe` 文件中,从而方便分发[^1]。需要注意的是,如果您的项目中有额外的资源文件(如配置文件、图片等),您可能还需要指定这些文件的位置并确保它们被正确加载。 --- #### 方法二:基于 Java 使用 IDEA exe4j 创建 EXE 文件 当应用程序是用 Java 开发时,通常先构建 JAR 文件再进一步转化为 EXE 文件。在此过程中,您可以利用 IntelliJ IDEA 配合第三方插件 `exe4j` 来处理复杂的场景,比如动态链接库 (`DLL`) 或共享对象 (`SO`) 的集成问题。 按照引用中的描述,在准备阶段需特别注意外部 DLL/OCX 库的管理。例如,对于某些特定的功能模块(假设涉及多媒体播放器组件或其他 COM 控件),需要手动调整其路径以便于目标平台能够正常访问这些依赖项[^2]。 此外,为了支持自定义行为——像自动安装或卸载 OCX/DLL 组件这样的需求,可以在启动入口处加入相应的初始化代码片段。下面是一个简单的 VBScript 示例用于演示如何在应用初次运行期间尝试重新注册某个控件实例: ```vbscript Option Explicit Private Sub Form_Load() ' 注册必要的 ActiveX 控制面板扩展 (.ocx) RegsvrFile 101, "CUSTOM", "path\to\dsoframer.ocx" End Sub ``` 上述例子展示了怎样调用 Windows 提供的标准服务接口函数 `RegSvr32.exe` 对应的目标文件名参数列表形式完成自动化部署流程的一部分工作流控制机制设计思路[^3]。 --- #### 方法三:采用 C++ 构建原生桌面客户端 另一种更底层但也更为灵活的选择就是直接运用 Microsoft Visual Studio 平台编写完整的 Win32 API 基础架构下的解决方案。这种方式允许开发者完全掌控整个项目的各个方面,包括但不限于图形界面布局定制化程度以及性能优化潜力等方面的优势所在之处体现出来显得尤为重要的一环即在于安全性考量方面做得更加深入细致一些的话就更好啦! 当然这同时也意味着更高的学习曲线门槛要求具备扎实的相关理论基础作为支撑前提条件下方能顺利开展实际动手实践环节的学习过程之中不断积累经验教训总结规律形成自己独特的见解看法分享给大家共同进步成长起来吧朋友们😊 --- ### 总结 综上所述,无论选用哪种技术栈开发具有用户注册特性的软件产品,都存在各自独特的优势特点值得我们去探索研究一番呢!希望以上介绍的内容对你有所帮助哦~ ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值