还在用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....
相关推荐
我送炭你添花1 小时前
Pelco KBD300A 模拟器:03.Pelco-P 协议 8 字节完整拆解 + 与 Pelco-D 一一对应终极对照表
python·测试工具·运维开发
R.lin1 小时前
Java 8日期时间API完全指南
java·开发语言·python
哆啦A梦15881 小时前
商城后台管理系统 03 登录布局
javascript·vue.js·elementui
西南胶带の池上桜2 小时前
1.Pytorch模型应用(线性与非线性预测)
人工智能·pytorch·python
曼巴UE52 小时前
UE FString, FName ,FText 三者转换,再次学习,官方文档理解
服务器·前端·javascript
selt7912 小时前
Redisson之RedissonLock源码完全解析
android·java·javascript
丘狸尾2 小时前
gradio uv无法add
开发语言·python
行走的陀螺仪2 小时前
高级前端 Input 公共组件设计方案(Vue3 + TypeScript)
前端·javascript·typescript·vue·组件设计方案
全栈陈序员3 小时前
【Python】基础语法入门(十七)——文件操作与数据持久化:安全读写本地数据
开发语言·人工智能·python·学习
一颗不甘坠落的流星3 小时前
【Antd】基于 Upload 组件,导入Json文件并转换为Json数据
前端·javascript·json