更新记录

1.0.2(2022-11-02)

修改组件的packagesPath默认值为"./python-packages"

修改组件说明中的错误

因为vue2的一些bug,放弃支持vue2的计划。若有大佬能解决vue2的支持问题,请联系我,感激不尽。


平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.4.0 app-vue app-nvue × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

wd-python

说明

本组件是对pyodide项目的uni-app组件封装,支持uni-modules规范。

因为pyodide的坑点比较多,目前只填平了使用vue3的一些坑,vue2的坑目前还未填平,因此暂时只支持vue3,vue2的支持在更新计划中。

本组件基于cpython编译成wasm实现,在浏览器等环境中以二进制运行,速度十分接近原生cpython,也因此理论上在支持wasm的环境中都能运行,但因为目前未进行测试,因此在支持列表中对除微信小程序以外的小程序均没有勾选支持。

如果需要使用Python包,可以将whl文件下载到项目下的python-packages(可以通过packagesPath更改)文件夹中,并将文件名写在packagesWhls的数组中。

如果使用的Python包是纯Python写的,可以直接使用whl文件。

如果使用的Python包包含c或者C++(比如numpy),需要自己用源代码编译为wasm二进制文件,由于pyodide官方的编译教程坑太多,因此之后在踩完坑后会把部分常用的Python包放出来。

使用方法

<wd-python 
    packagesPath="./python-packages" //注意这前面 没有 冒号:
    :packagesWhls="[]" //注意这前面 有 冒号:
    ref="python"
>

解释


packagesPath:用于存放需引用Python包的文件夹路径 默认为"@/python-packages"

packagesWhls:Python包的文件名数组 例如:['mpmath-1.2.1-py3-none-any.whl','sympy-1.11.1-py3-none-any.whl'] 注:本组件不会自动处理依赖,因此需要把使用的包以及它的依赖一起写在数组中(后续会考虑更新自动依赖功能)

ref:用于js调用运行python代码 参考:uni-app官方文档


js示例代码

const python = this.$refs.python;
await python.forReady();
console.log(python.execute(`
    import sympy
    x=sympy.Symbol('x')
    fx=5*x+4
    y1=fx.evalf(subs={x:6})
    print(y1)
    y1
`));

Python代码中的print函数会将内容输出到Console中,最后一行代码的变量(示例中的y1)会作为execute的返回值,如果结果为字符串之类的类型,会自动转为js中的字符串等类型,如果是一些特殊的Python类型,会转为Pyproxy对象。

示例工程

正在开发中………………

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问