六种打包Python代码方法优缺点分析

python项目从开发环境部署到linux服务器 python项目部署的步骤 阅读详情

Python是一种高级编程语言,它具有易学易用、跨平台等优点,因此在开发中得到了广泛的应用。然而,Python代码需要在Python解释器中运行,这对于一些用户来说可能不太方便。Python作为解释型语言,发布即公开源码,虽然是提倡开源但是有些时候就是忍不住想打包成exe,不仅仅是为了对代码进行加密,而是为了跨平台。防止有些没有安装py环境的电脑无法运行软件。

因此,将Python代码打包成可执行文件(exe)是一种很好的解决方案。本文将分析几种打包方式的优缺点。

01

使用pyinstaller

pyinstaller是一个流行的Python打包工具,它可以将Python代码打包成独立的可执行文件。

使用pyinstaller打包Python代码非常简单,只需要在命令行中输入以下命令:pyinstaller your_script.py

这将生成一个可执行文件,可以在Windows、Linux和MacOS上运行。

02

使用cx_Freeze

cx_Freeze是另一个流行的Python打包工具,它可以将Python代码打包成独立的可执行文件。

使用cx_Freeze打包Python代码也很简单,只需要在命令行中输入以下命令:cxfreeze your_script.py --target-dir dist

这将生成一个可执行文件,可以在Windows、Linux和MacOS上运行。

03

使用py2exe

py2exe是一个Python打包工具,它可以将Python代码打包成Windows可执行文件。

使用py2exe打包Python代码也很简单,只需要在命令行中输入以下命令:python setup.py py2exe

这将生成一个Windows可执行文件。

04

使用py2app

py2app是一个Python打包工具,它可以将Python代码打包成MacOS可执行文件。

使用py2app打包Python代码也很简单,只需要在命令行中输入以下命令:python setup.py py2app

这将生成一个MacOS可执行文件。

05

使用Nuitka

Nuitka是一个Python编译器,它可以将Python代码编译成C++代码,然后将其打包成可执行文件。

使用Nuitka打包Python代码也很简单,只需要在命令行中输入以下命令:nuitka your_script.py

这将生成一个可执行文件,可以在Windows、Linux和MacOS上运行。

06

使用Nuitka+pyinstaller

Nuitka和pyinstaller可以结合使用,将Python代码编译成C++代码,然后使用pyinstaller将其打包成可执行文件。

使用Nuitka+pyinstaller打包Python代码也很简单,只需要在命令行中输入以下命令:

nuitka --standalone your_script.py

pyinstaller your_script.spec

这将生成一个可执行文件,可以在Windows、Linux和MacOS上运行。

07

总结

本文介绍了6种将Python代码打包成exe应用的方式,包括pyinstaller、cx_Freeze、py2exe、py2app、Nuitka和Nuitka+pyinstaller。每种方式都有其优点和缺点。比如pyinstaller,也是我最常用的。

优点:可将python文件转成可执行文件;跨平台;输出的可以是单一目录,也可以是一个单独的打好包的可执行文件;py2exe貌似输出目录;智能支持python的第三方模块如PyQt,外部数据文件等;支持EGG格式文件;可执行文件可以用UPX压缩,二进制压缩方式;支持控制台和视窗两种方式;可以选择exe文件的图标 (Windows only);支持 COM server (Windows only)。

缺点:import导入的问题:pyinstaller是很智能的,只要指定了入口py文件,那么它就会根据代码自动查找需要导入的包。但是隐式导入的话,平常运行是没有问题的。例子:

# test1.py

from sqlalchemy import create_engine

from sqlalchemy.orm import sessionmaker

DB_CONNECT_STRING = ‘mysql+pymysql://root:123456@localhost/study’

engine = create_engine(DB_CONNECT_STRING, echo = False)

DB_Session = sessionmaker(bind = engine)

session = DB_Session()

print(‘this is my test’)

运行这个ORM库的初始化引擎,是没有问题的,在console得到结果:this is my test

那么我们开始打包,使用最简单的pyinstaller test1.py。打包完成后,在当前目录下有个dist文件夹,进入dist下的test1文件夹,然后打开cmd,运行这个exe,我们就会发现:

提示:no model named ‘pymysql’

这是怎么回事呢?那么问题来了,sqlalchemy这个库在初始化的时候是不需要显示导入引擎库的,它自己有一个create_engine()的函数来初始化,这个字符串是使用者根据规则来自己填写的。其实解决的方法很简单,我们只要在显式导入pymysql这个库即可。现在我们导入这个库:import pymysql

重新打包一遍(重新打包的时候记得删除掉spec文件,否则会有缓存,或者是加上——clean选项清除掉),再次运行,现在就没有这个问题了。

多进程打包的问题

官方的CPython存在一个GIL锁,这个锁的存在有很多优点,很多库都是线程安全的,单线程执行的效率也高。在python早期的一个版本中取消掉了GIL,代之以高粒度的锁来实现多线程,但是实际应用中单个线程的效率大大降低。故后来又将GIL这个锁还原回去,所以至今的python2也好还是python3中都会有这个锁。但是这个锁有很大一个问题,那就是效率问题,它导致了python仅仅只能利用一个core来进行数据的计算。所以后面为了弥补这个GIL带来的问题,专家们设计了multiprocessing库,gevent库等。

前一个是多进程库,为了解决python用于数据密集型处理的情况;后一个用于异步IO处理的情况,基本原理就是在CPU时钟之间来回切换,简单的例子就是爬虫程序爬取网页的时候。假如有10个url,我们都要去GET它,实际上网络之间的延迟是大大高于计算机内部的,那么这个时间内计算机就切换到下一个。有时候运用多进程是必须的,这个替代不了,哪怕它占用资源很多。

总之开发者可以根据自己的需求选择合适的方式。无论选择哪种方式,都可以将Python代码打包成独立的可执行文件,方便用户使用。

本文转自网络,如有侵权,请联系删除。

学习资源推荐

除了上述分享,如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。

这里给大家展示一下我进的兼职群和最近接单的截图

兼职群

私单

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

image-20230619144606466

因篇幅有限,仅展示部分资料,添加上方即可获取
Python 打包 exe 指南 本专栏主要包括三部分内容,第一部分为如何将python文件打包为 exe 文件,Pyinstalle和Nuitka;第二部分为如何制作安装包Nsis和Inno Setup Complier,;第三部分主要讲述一些专业的包,如Pyside6、PySimpleGui、Pandas等在使用Nuitka打包时,遇到的错误汇总。 阅读详情

相关推荐

python的一个打包工具cx_Freeze

因此,在使用cx_Freeze打包之前,最好先进行测试和验证,确保打包后的程序在目标机器上能够正常运行。这些工具可以将Python程序及其所需的依赖项打包成一个独立的可执行文件或目录,从而在新机器上运行,而无需再安装Python。请记住,在使用这些工具打包时,确保包含程序所需的所有依赖项,以确保程序在新机器上能够正常运行。打包为可执行文件:使用cx_Freeze,你可以将Python脚本打包为可执行文件,这样你可以在目标机器上直接运行该文件,而无需事先安装Python。

zhangzhechun的专栏 6617

6种打包Python代码的方法,让你的程序变成exe应用!

Python是一种高级编程语言,它具有易学易用、跨平台等优点,因此在开发中得到了广泛的应用。然而,Python代码需要在Python解释器中运行,这对于一些用户来说可能不太方便。因此,将Python代码打包成可执行文件(exe)是一种很好的解决方案。本文将介绍6种将Python代码打包成exe应用的方式。

lojloj的博客 8万+

掌握Python模块包库的六种安装方法:从基础到进阶

在进行Python开发时,往往会遇到不同项目需要不同版本的依赖包的情况。为了隔离项目依赖、避免版本冲突,Python提供了一些虚拟环境工具,其中最常用的就是virtualenv和venv。

weixin_42462474的博客 1578

Python py文件打包成 exe文件

多文件打包和单文件相同,只需要保证含有主函数的脚本能正确运行,其他依赖文件就可以省略

m0_56208280的博客 1万+

三、Crowd与JIRA、Confluence用户集成并SSO单点登录

补充说明: 通过此方法集成后,用户、组以及用户和组的关系都在Crowd系统中存储,但各个系统的权限仍由各系统控制,也可在JIRA和Confluence中添加和删除用户。 在做步骤4和步骤5的时候,要特别小心,确保当前系统的超级权限用户(一般为admin,具体看当前系统的全局权限配置)和组以及它们的关系已经在Crowd中同样存在了,才可切换并禁用当前系统的内部用户目录,否则可能造成权限丢失等严重问题(因为禁用了内部用户目录,而Crowd中又不存在这个超级权限用户和组或它们的关系,所以权限就丢失了) 维护示例

weixin_38621072的博客 2989

手把手讲解RTX5操作系统在GD32F407上的移植

然后将GD32F4xx_Demo_Suites_V2.6.4\GD32407V_START_Demo_Suites\Projects\01_GPIO_Running_LED下面的main函数复制到我们的项目文件夹中;打开对应GD32407V_START_Demo_Suites的文件夹下面的Utilities,复制gd32f407v_start.c和gd32f407v_start.h文件到一开始项目保存的文件夹下面;为了验证我们的操作系统是否被正确添加,是否能够正确运行,我们需要添加示例文件;

Praguejing的博客 1865

六种打包Python代码方法的优缺点分析

本文介绍了6种将Python代码打包成exe应用的方式,包括pyinstaller、cx_Freeze、py2exe、py2app、Nuitka和Nuitka+pyinstaller。每种方式都有其优点和缺点。比如pyinstaller,也是我最常用的。优点:可将python文件转成可执行文件;跨平台;输出的可以是单一目录,也可以是一个单独的打好包的可执行文件;py2exe貌似输出目录;智能支持python的第三方模块如PyQt,外部数据文件等;支持EGG格式文件;

weixin_60535956的博客 1574

微信h5 支付,已经获得weixin://wap/pay?prepayid,但是无法调起微信客户端支付

结果几个接口,最终获得到到一直包含调起微信客户端的支付链接 但是直接打开这个页面,却不能调起微信客户端支付,原因是,在打开新页面的时候,需要设置a.rel = "noreferrer"; <body> <a href="javascript:void(0)" onclick="openNewWindowNoreferrer(this)">点击支付</a&...

qq_31683775的博客 4万+

六种打包Python代码方法优缺点分析(建议收藏)

Python是一种高级编程语言,它具有易学易用、跨平台等优点,因此在开发中得到了广泛的应用。然而,Python代码需要在Python解释器中运行,这对于一些用户来说可能不太方便。Python作为解释型语言,发布即公开源码,虽然是提倡开源但是有些时候就是忍不住想打包成exe,不仅仅是为了对代码进行加密,而是为了跨平台。防止有些没有安装py环境的电脑无法运行软件。因此,将Python代码打包成可执行文件(exe)是一种很好的解决方案。本文将分析几种打包方式的优缺点。01 使用pyinstaller。

大模型研究中心 5740

佳能C3025打印机扫描方法

佳能C3025彩色打印机扫描方法 步骤一、如果打印机处于休眠状态,可按图中标记的按钮唤醒打印机; 然后点击屏幕上的【扫描】 步骤二、扫描类型选择【文件】 步骤三、点击屏幕上的【地址簿】 步骤四、此时屏幕胡看到名字,如果看不到自己的名字,可往下滑动直到看到自己的名字,然后点击自己的名字,再点击右下角的【应用】 步骤五、点击【发送设置】,可看到文件格式为PDF,点击可以选择JPEG的图片格式。...

weixin_46019317的博客 2万+

【中软软件测试笔试题】中国软件与技术服务股份有限公司笔试一卷

请分别写出ISO7层架构,并分别说明TCP、UDP协议分别在处于哪一层,以及TCP、 UPD协议有什么区别。 答:7 应用层 6 表示层 5 会话层 4 传输层 3网络层 2 数据链路层 1 物理层 第四层;UDP是面向无连接、不可靠数据传输协议; TCP是面向连接、可靠数据传输协议......

Yanan990830的博客 1817

Python 打包到底怎么选?我把 6 种主流方式全跑了一遍,优缺点一次说透

Python 打包工具横评:没有银弹,只有适合 本文深度评测了 Python 生态中主流打包工具的实际使用体验。作者根据真实项目经验,从安装难度、打包体积、兼容性、性能等多维度对比了 PyInstaller、cx_Freeze、Nuitka、Docker 和 PyOxidizer 等工具。 核心结论:不同场景需要不同方案。PyInstaller 适合简单工具打包但体积大;Nuitka 编译性能优异但兼容性稍差;Docker 提供最彻底的隔离但学习成本高;PyOxidizer 则展现出新兴工具的潜力。文章特别

qq_31815769的博客 203

1. SAP Business Application Studio 里创建一个基于 CAP 模型的最简单的 OData 服务

本文基于 SAP Cloud Application Programming 编程模型的 OData 服务开发教程的第一步,简述了 SAP Business Technology Platform 里 Business Application Studio 开发工具的打开方式,创建 Dev Space 以及 CAP 项目的创建步骤,以及如何通过 schema.cds 和 service.cds 分别创建 OData 模型和 OData 服务,最后通过 ports preview 打开 OData 服务预览页

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1803

6种Python打包EXE工具全解析

新手推荐或(图形化操作)。性能需求:尝试Nuitka或PyOxidizer。跨平台兼容:优先选择或cx_Freeze。注意:打包后需在目标平台测试,部分工具可能被杀毒软件误报。

2502_93949526的博客 703

专转本-信息通信技术-笔记

专转本-信息通信技术-笔记

大今野 1367

摆脱英文束缚!群晖Transmission4.0.4全新中文界面攻略

在群晖安装完官方Transmission4.0.4套件后,界面是英文状态的,不太好用。但是按照网上分享的原来4.0以前版本的方法更新UI又失败,所以自己搞了下成功了,分享给需要的朋友。

XiaoqiangClub的博客 5223

后台部署方案介绍

小型项目:推荐使用托管服务(如Heroku)或Serverless服务。中型项目:推荐使用云服务器(如阿里云ECS)或容器化技术(如Docker + Kubernetes)。大型项目:推荐使用Kubernetes或云原生解决方案。如果你有具体的需求或预算,我可以帮你推荐更合适的方案!

baidu_34077111的博客 830

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: Python编程的终极十大工具
下一篇: Python安装一文搞定!(Mac篇)
大模型应用场景
博客等级 码龄5年 7670粉丝 1350原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值