python打包工具-Nuitka

文章介绍了如何使用Nuitka工具将Python源码编译为C++,生成pyd文件,进一步打包成独立的可执行文件,以提高程序的安全性和运行效率。通过提供一系列的命令行选项,如--standalone、--plugin-enable等,来处理依赖、图标和不同操作系统的需求。打包过程中要注意处理缺失的第三方模块,确保程序完整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nuitka将python源码转成C++(这里得到的是二进制的pyd文件,防止了反编译),然后再编译成可执行文件。提高安全性和运行速度。

github:https://github.com/2267770481/cython_test

安装
pip install nuitka
pip install ordered-set # 加速编译
pip install zstandard # onefile时压缩文件
打包

目录结构image
代码地址:https://files.cnblogs.com/files/yimeimanong/cython_test.zip?t=1682506730&download=true

windows下打包python -m nuitka --standalone --show-memory --show-progress --nofollow-imports --plugin-enable=numpy --follow-import-to=apps --output-dir=out --windows-icon-from-ico=./favicon.ico app.py

执行结果:image

等打包完后,会生成个out文件夹,里边的app.dist就是我们需要的东西。image

如果直接运行 app.dist/app.exe 程序的时候,有时候会出现缺少某个模块的情况,这是因为我们只将自己的代码转成C++,不管这些大型的第三方包!。所以我们需要在python依赖包文件夹(Lib\site-packages)中找到这些包,并复制到app.dist中。(比较懒的做法是将site-packages中的所有文件直接复制到app.dist中,如果有出现冲突的就选择跳过)

现在可以直接运行app.exe应用程序。image

接口调用http://127.0.0.1:1111/module_a/a_aimage

linux 和 mac也可以用上边的指令

指令集
--mingw64 #默认为已经安装的vs2017去编译,否则就按指定的比如mingw(官方建议)
--standalone 独立环境,这是必须的(否则拷给别人无法使用) 不需要再安装python等之类的
--windows-disable-console 没有CMD控制窗口
--output-dir=out 生成exe到out文件夹下面去
--show-progress 显示编译的进度,很直观
--show-memory 显示内存的占用
--nofollow-imports:不编译代码中所有的import,比如keras,numpy之类的。
--follow-import-to=utils,src:需要编译成C++代码的指定的2个包含源码的文件夹,这里用,来进行分隔。
--enable-plugin=pyside6
--plugin-enable=tk-inter 打包tkinter模块的刚需
--plugin-enable=numpy 打包numpy,pandas,matplotlib模块的刚需
--plugin-enable=torch 打包pytorch的刚需
--plugin-enable=tensorflow 打包tensorflow的刚需
--windows-icon-from-ico=你的.ico 软件的图标
--windows-company-name=Windows下软件公司信息
--windows-product-name=Windows下软件名称
--windows-file-version=Windows下软件的信息
--windows-product-version=Windows下软件的产品信息
--windows-file-description=Windows下软件的作用描述
--windows-uac-admin=Windows下用户可以使用管理员权限来安装
--windows-disable-console:运行exe取消弹框。这里没有放上去是因为我们还需要调试,可能哪里还有问题之类的。
--linux-onefile-icon=Linux下的图标位置
--onefile 单文件打包
–-remove-output 在打包结束后,清理打包过程中生成的临时文件
--include-package=复制比如numpy,PyQt5 这些带文件夹的叫包或者轮子
--include-module=复制比如when.py 这些以.py结尾的叫模块
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值