其他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()
运行示例:
3、执行打包
nuitka test.py
这里的红字部分是提醒我们注意打包有没有漏掉任何库文件,这里暂时先不用管。出现successfully即成功。 现在的目录示例如下: 这里的.build 文件夹是编译生成的,test.cmd 和test.exe 都可以用来启动程序,点击test.exe 启动一下试试看:
5、注意
我们这样打包并没有打包进环境,所以在没有安装python和pysimplegui的环境中运行,会提示错误: GUI程序运行后边带一个黑乎乎的命令提示框也很难看,我们通过接下来的文章一起解决。
二、去掉命令提示窗口
命令窗口可以用来调试,有时候直接运行没问题的程序,打包完会有很多问题,可以调试完,再关闭命令提示窗口(打包调试见《Python程序打包指南》)。
2.1、打包命令
nuitka --windows-disable-console test.py
--windows-disable-console 表示禁用命令行窗口,仅限Windows
2.2、试运行
三、脱离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程序打包指南》其他篇章)
3.3、试运行
四、解释
4.1、python39.dll
看3.2中的截图,可以看到exe同级目录下会有一个python3x.dll 文件(绿色标注),在执行exe时,需要通过该文件调用那些import的模块。可以简单理解为是python环境。
|