还在用Pyinstaller打包python?试试轻量级的LightCode吧!

前段时间实现了基于webview2的轻量级软件开发工具LightCode,可以基于HTML5开发并打包成轻量级exe可执行文件。读者可以前往【爆肝实现一款基于webview2的酷炫的轻量级的软件开发工具------LightCode】来回顾。

看到这里可能读者有疑问了,这跟打包Python有什么关系?其实,LightCode是专为Python打造。大家都知道,在Python中开发带界面的exe非常丑陋并且低效,基于HTML5可以为Python解决界面丑陋问题,并且开发效率非常高。

好了进入重点,LightCode现在支持将Python打包到exe中啦!!!并且还支持HTML5中直接调用Python代码,Python可以直接向HTML5发送消息。

一句话描述:通过LightCode,可以实现HTML5开发界面,Python实现逻辑,HTML5Python之间可以相互调用,HTML5Python打包发布到一个exe文件中。

今天我们以一个简单的例子演示如何使用LightCode打包Python.

Python环境准备

在使用Python之前,需要下载好Python环境。在project.json文件中设置Python版本Python下载镜像PIP镜像,如下所示:

json 复制代码
{
    //其他略...
    "pyVersion":"3.12.9",
    "pythonProxy":"",
    "pipProxy":""
}
  • pyVersion: 指定使用的python版本。
  • pythonProxy: 指定下载python的镜像,如果为空,则默认从https://mirrors.aliyun.com/python-release/windows中下载。
  • pipProxy: 指定使用pip安装库时使用的镜像,如果为空则默认从https://mirrors.aliyun.com/pypi/simple/中下载。

有了以上配置后,接下来可以如下命令完成Python安装以及安装指定库。首先,需要使用如下命令创建项目:

创建项目

shell 复制代码
LightCode.exe -d -w D:\MyWork\test_python

其中D:\MyWork\test_python是创建的项目路径。

安装Python

shell 复制代码
LightCode.exe -e -w D:\MyWork\test_python

执行如上命令后,完成安装,输出如下日志:

log 复制代码
LightCode.exe -e -w D:\MyWork\test_python
[2025-03-15 13:57:28] >>> 正在下载Python 3.12.9: https://mirrors.aliyun.com/python-release/windows/python-3.12.9-embed-amd64.zip
[2025-03-15 13:57:29] <<< 下载Python完成...
[2025-03-15 13:57:29] >>> 正在安装Python 3.12.9 到 D:\MyWork\test_python
[2025-03-15 13:57:29] 【成功】已安装Python3.12.9

界面开发

D:\MyWork\test_python中创建index.html, 内容如下:

html 复制代码
<html>
<head>
    <style>
        html, body {margin: 0;padding: 0;background-color: black;color: #fff}
        red{color:red}
        white{color:white}
    </style>
</head>

<body>
    <div class="log" id="log"></div>
</body>
<script>
    // Native.openDevTools();//打开开发者工具
    function printLog(msg, isStdOut) {
        var line = document.createElement(isStdOut ? "white" : "red");
        line.innerText = msg;
        document.getElementById("log").appendChild(line)
    }
    Native.captureConsoleOutput(function (output, isStdOut) {
        printLog(output, isStdOut);
    })
    Native.initPython("3.12.9");
    Native.runPythonScript(`
import threading
import time
def worker():
    idx = 0
    while True:
        time.sleep(1)
        idx+=1
        if idx>3:
            raise Exception("Test Exception")
        print("hello 《Python学习实战》", idx)

thread = threading.Thread(target=worker, args=())
thread.start()
thread.join()
`);
</script>
</html>

以上代码模拟Python实际项目,模拟了如下任务:

  • 整个HTML是个黑色界面,模拟控制台。并在JS中抓取Python的实时打印信息,然后在web页面显示。
  • 开启一个Python异步线程运行任务
  • Python线程中抛出一个异常

运行软件

shell 复制代码
LightCode.exe -d  D:\MyWork\test_python

软件运行结果如下,可以看到,抛出的异常也被抓到并显示

打包软件

打包时需要注意如下参数

json 复制代码
{
//....
"pkgResDir": true,
//...
}

pkgResDir参数表示是否将资源目录(即.res)一起打包到exe文件,需要注意的是,为了保证加载速度以及防止被杀毒软件误伤,资源文件不会做加密。因此像dll等文件推荐放入到.res目录中。

  • 如果pkgResDir设置为true,则.res目录会被压缩并打包到exe文件。当资源文件比较小时,推荐使用true
  • 如果pkgResDir设置为false,则.res目录会拷贝到exe文件同级目录。当资源文件较大时,推荐false

使用如下命令打包:

shell 复制代码
LightCode.exe -p -w D:\MyWork\test_python

由于我们的demo中的资源文件相对较小,因此打包到一个exe文件中,可以看到,将整个python虚拟机一起打包到exe后,大小只有11M左右。

参考资料

  1. LightCode官方开发文档:lightcodesoft.github.io/docs/index....
相关推荐
Mantanmu6 分钟前
Python训练day40
人工智能·python·机器学习
天天爱吃肉821810 分钟前
新能源汽车热管理核心技术解析:冬季续航提升40%的行业方案
android·python·嵌入式硬件·汽车
GISer_Jing11 分钟前
[总结篇]个人网站
前端·javascript
ss.li12 分钟前
TripGenie:畅游济南旅行规划助手:个人工作纪实(二十二)
javascript·人工智能·python
l木本I26 分钟前
大模型低秩微调技术 LoRA 深度解析与实践
python·深度学习·自然语言处理·lstm·transformer
哆啦A梦的口袋呀29 分钟前
基于Python学习《Head First设计模式》第七章 适配器和外观模式
python·学习·设计模式
十月狐狸32 分钟前
Python字符串进化史:从青涩到成熟的蜕变
python
海的诗篇_1 小时前
前端开发面试题总结-JavaScript篇(二)
开发语言·前端·javascript·typescript
琹箐1 小时前
ant-design4.xx实现数字输入框; 某些输入法数字需要连续输入两次才显示
前端·javascript·anti-design-vue
程序员-小李1 小时前
VuePress完美整合Toast消息提示
前端·javascript·vue.js