更新记录
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对象。
示例工程
正在开发中………………