其他Nuitka打包技巧见《Python程序打包指南》
一、打包入门
1、打包命令
nuitka xx.py
2、示例代码
import PySimpleGUI as sg
layout = [
[sg.Text('Hello Word',size=(22,1))],
[sg.Submit('确认'), sg.Cancel('取消')]
]
window = sg.Window('Demo', layout)
event, values = window.read()
运行示例: ![在这里插入图片描述](https://img-blog.csdnimg.cn/98639148f01a4be8abdb52fc4405f987.png)
3、执行打包
nuitka test.py
这里的红字部分是提醒我们注意打包有没有漏掉任何库文件,这里暂时先不用管。出现successfully即成功。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f98f4098094a480f9584afa6196c54be.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWXVtT1M=,size_20,color_FFFFFF,t_70,g_se,x_16) 现在的目录示例如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/5c7afff5d24449acbdba4cdaa84f96fa.png) 这里的.build 文件夹是编译生成的,test.cmd 和test.exe 都可以用来启动程序,点击test.exe 启动一下试试看: ![在这里插入图片描述](https://img-blog.csdnimg.cn/bfbecbdf5aaf4f4f9ce027ecb680784d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWXVtT1M=,size_20,color_FFFFFF,t_70,g_se,x_16)
5、注意
我们这样打包并没有打包进环境,所以在没有安装python和pysimplegui的环境中运行,会提示错误: ![在这里插入图片描述](https://img-blog.csdnimg.cn/0494099e90424549bc01b6edcee2c2c0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWXVtT1M=,size_20,color_FFFFFF,t_70,g_se,x_16) GUI程序运行后边带一个黑乎乎的命令提示框也很难看,我们通过接下来的文章一起解决。
二、去掉命令提示窗口
命令窗口可以用来调试,有时候直接运行没问题的程序,打包完会有很多问题,可以调试完,再关闭命令提示窗口(打包调试见《Python程序打包指南》)。
2.1、打包命令
nuitka --windows-disable-console test.py
--windows-disable-console 表示禁用命令行窗口,仅限Windows
2.2、试运行
![在这里插入图片描述](https://img-blog.csdnimg.cn/8c728741570a4f43a5b509ae729fad8a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWXVtT1M=,size_20,color_FFFFFF,t_70,g_se,x_16)
三、脱离python环境运行
3.1、打包命令
nuitka --standalone xx.py
--standalone 表示打包文件支持脱离Python环境独立运行。
3.2、示例打包
打包命令(同时去掉黑框):
nuitka --standalone --enable-plugin=tk-inter --windows-disable-console test.py
--enable-plugin=tk-inter 命令告诉nuitka打包的时候将``tkinter一起打包进去。因为我这里引入了pysimplegui这个库,这个库依赖于tkinter。
--standalone 的话,会默认编译引用的包然后一起打包进去。
大约打包了2分钟,因为Nuitka会将这些引入的包编译,所以比较慢(打包插件见《Python程序打包指南》其他篇章)
如果是引入其他如pyqt、pandas、numpy等这些庞大包,那编译起码得40min+(解决方式见《Python程序打包指南》其他篇章) ![在这里插入图片描述](https://img-blog.csdnimg.cn/bed79c1da8e4405e9da2db3e4a49f022.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWXVtT1M=,size_19,color_FFFFFF,t_70,g_se,x_16)
3.3、试运行
![在这里插入图片描述](https://img-blog.csdnimg.cn/c1cb3b29cf284abb91430485c98d7204.png)
四、解释
4.1、python39.dll
看3.2中的截图,可以看到exe同级目录下会有一个python3x.dll 文件(绿色标注),在执行exe时,需要通过该文件调用那些import的模块。可以简单理解为是python环境。
|