ToolJet 使用 RunPy 导入外部 Python 库(Pandas、NumPy 实战指南)

发布时间:2026/11/7 22:46:43

ToolJet 使用 RunPy 导入外部 Python 库(Pandas、NumPy 实战指南) ToolJet 使用 RunPy 导入外部 Python 库Pandas、NumPy 实战指南【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet本文是一份面向 ToolJet 开发者的实操指南讲解如何在 RunPy 查询中借助 Pyodide 的 micropip 安装 pandas、NumPy 等第三方 Python 包并在应用中完成随机数生成、CSV 解析等真实数据处理任务。读完本文你将掌握从安装外部库、随应用加载到结合 File Picker 组件触发 Python 解析的完整链路并了解 RunPy 底层执行机制与已知限制。RunPy 与外部库为什么需要 micropipToolJet 的RunPyRun Python code查询允许你在应用中编写自定义 Python 代码与组件、查询、全局变量进行交互。默认情况下RunPy 运行环境只支持 Python 标准库参见 Run Python Code 数据源文档。要使用 pandas、NumPy 这类第三方包就需要通过micropip在运行时安装。RunPy 的底层执行引擎是Pyodide——一个基于 WebAssembly 的 Python 运行时。从源码实现看ToolJet 前端在 utils.js 中封装了loadPyodide()通过window.loadPyodide({ indexURL: process.env.PYODIDE_BASE_URL })加载 Pyodide在 queryPanelSlice.js 中执行查询时会先调用pyodide.loadPackagesFromImports(code)根据代码里的 import 语句自动加载包再显式pyodide.loadPackage(micropip, log)加载 micropip最后通过pyodide.runPythonAsync(code)异步执行 Python 代码。这解释了为什么你可以在 RunPy 中直接await micropip.install(...)。重要限制Pyodide 环境不支持 C/C 扩展模块在开始之前必须明确一条关键约束带有 C/C 扩展、依赖系统库的模块无法在 Pyodide 中运行。原因在于 Pyodide 运行在 Web 浏览器环境中没有系统库访问权限它基于 WebAssembly 编译的 Python也不支持某些系统调用。因此安装第三方包时请优先选择 Pyodide 官方构建的 wheel 包pandas、NumPy、matplotlib、requests 等常用科学计算与网络库均有支持。准备工作创建应用与 RunPy 查询创建新应用在 ToolJet 中创建一个新的 Application。添加 RunPy 查询在 Query Panel 中点击新增查询选择Run Python code数据源查询默认命名为runpy1。使用 micropip 安装 pandas 与 NumPy在 RunPy 查询编辑器中粘贴以下代码然后点击Run执行安装import micropip await micropip.install(pandas) await micropip.install(numpy)执行后pandas 与 NumPy 便可在当前 RunPy 查询以及后续查询中使用了。让包随应用加载Run this query on application load?安装动作本身会消耗一些时间如果每次打开应用都要手动运行安装查询体验较差。为此请在查询编辑器中启用Run this query on application load?选项。开启后该安装查询会在每次应用加载时自动执行确保 pandas、NumPy 等包在应用启动后立即可用无需手动触发。实战一用 NumPy 生成随机数安装完成后新建一个 RunPy 查询利用 NumPy 的 random 模块生成随机数from numpy import random x random.binomial(n10, p0.5, size10) print(x)n10单次试验一次伯努利试验的次数即二项分布参数 np0.5每次试验成功的概率size10生成 10 个服从二项分布的随机数。运行后输出可以在**浏览器控制台Console**中查看因为 RunPy 的print输出会打到浏览器 console。返回给组件的最终结果则是该查询的返回值。实战二解析 CSV 数据CSV 解析是内部工具中最常见的需求之一。本示例结合File Picker组件把用户上传的 CSV 文件内容读入 Python利用StringIO、csv与 pandas 解析为 DataFrame。第一步编写解析代码新建一个 RunPy 查询粘贴以下代码from io import StringIO import csv import pandas as pd scsv components.filepicker1.file[0].content f StringIO(scsv) reader csv.reader(f, delimiter,) df pd.DataFrame(reader) print(df.info()) print(df)代码要点说明components.filepicker1.file[0].content从画布上的File Picker组件此处为默认命名filepicker1读取第一个上传文件的原始内容。ToolJet 的 RunPy 环境会将components对象注入到 Python 全局命名空间中见 queryPanelSlice.js 中的pyodide.globals.set(components, ...)因此可以在 Python 中直接访问组件数据StringIO把字符串内容包装成类似文件的对象供csv.reader读取csv.reader(f, delimiter,)按逗号分隔逐行解析pd.DataFrame(reader)将解析出的行列表构建为 pandas DataFrameprint(df.info())与print(df)在浏览器控制台输出 DataFrame 的结构与内容。第二步在画布上添加 File Picker 组件在画布中拖入一个File Picker组件。第三步配置事件触发选中 File Picker 组件在事件配置中Event事件选择On File LoadedAction动作选择Run QueryQuery查询选择上一步创建的 RunPy 查询。这样用户每次在 File Picker 上加载文件就会自动运行该 RunPy 查询。第四步运行并查看结果最后在 File Picker 组件上加载一个 CSV 文件运行关联的 RunPy 查询并在浏览器控制台查看输出。深入RunPy 的更多能力与边界本文聚焦“导入外部库”但理解 RunPy 的整体能力有助于更好地组合使用触发其他查询actions.runQuery(getSalesData)或queries.getSalesData.run()获取查询数据await queries.getSalesData.run()后通过queries.getSalesData.getData()/getRawData()/getLoadingState()读取结果读写变量actions.setVariable(...)、actions.getVariable(...)、actions.setPageVariable(...)、actions.getPageVariable(...)数据变换在查询编辑器中启用 Transformations可用return [...]直接返回处理后的数据详见 run-py.md。已知限制与应对urlopen无法打开外部 URL这是 Pyodide 框架的约束并非 ToolJet 缺陷。解决方案是利用 Pyodide 的 Python ↔ JavaScript 互操作用 JS 的fetch发起 HTTP 请求例如from js import fetch import json async def push_data(url, data): response await fetch( url, methodPOST, headers[ [Authorization, Token my_token], [Content-Type, application/json] ], bodydata ) reply await response.json() return reply url https://api.baserow.io/api/database/rows/table/.../?user_field_namestrue reply await push_data(url, json.dumps(my_data)) reply安装持久性micropip 安装的包作用于当前浏览器会话因此务必配合“Run this query on application load?”使用保证每次加载应用时环境就绪。总结通过 RunPy micropipToolJet 将浏览器内的 Python 执行环境扩展到了第三方科学计算库的级别先用await micropip.install(...)安装 pandas / NumPy再结合Run this query on application load?保持环境常驻随后即可在查询中完成随机数生成、CSV 解析等任务并通过 File Picker 的事件机制实现“文件加载即解析”的自动化流程。同时需牢记 Pyodide 不支持 C/C 扩展模块、urlopen受限等边界条件遇到网络请求时优先采用js.fetch互操作方案。【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/8 1:45:26

AI领域最新突破:多模态模型与边缘芯片技术解析

1. 项目概述上周AI领域的发展速度令人咋舌,作为一名长期跟踪技术趋势的从业者,我每天至少要花2小时梳理各平台资讯。3月18日至3月23日这短短几天里,从底层框架到应用落地都出现了突破性进展。最让我兴奋的是,这些进展不再是实验室…

2026/11/8 4:04:46

Go语言数据统计分析框架选型与优化指南

1. Go语言数据统计分析框架概述在数据处理领域,Go语言凭借其出色的并发性能和简洁的语法设计,正在成为数据统计分析的新兴选择。作为一名长期使用Go进行数据处理开发的工程师,我发现Go生态中已经形成了几个具有明显特色的统计分析框架体系&am…

2026/11/8 19:56:55

晋中特种工证件通过率揭秘:实操考试心里没底怕挂科怎么办?

晋中特种工证件通过率揭秘:实操考试心里没底怕挂科怎么办? 实操考试心里没底怕挂科,这是绝大多数准备考晋中特种工证件的学员心里的坎。特别是像低压电工、焊工、高处作业这些操作性极强的工种,稍微一个细节没注意,就可能挂科。其实,很多学员并不知道,…

2026/11/8 19:56:55

电工证考试通过率数据揭秘:学历不高怕报不上名?这些干货早知道

电工证考试通过率数据揭秘:学历不高怕报不上名?这些干货早知道 学历不高怕报不上名?别担心,电工证考试通过率数据其实没你想象的那么可怕,关键在于你有没有掌握正确的方法和方向。今天我来跟你聊一聊河南转岗从业者的亲身经历,讲讲电工证考试通过率数据…

2026/11/8 19:51:55

电工作业怎么操作与怎么报名全攻略,实操考试心里没底怕挂科?

电工作业怎么操作与怎么报名全攻略,实操考试心里没底怕挂科? 你是不是也这样,听说要考电工证,脑子里第一反应就是“实操考试心里没底怕挂科”?别急,这正是本文想帮你解决的痛点——从怎么报名到实操操作,手把手带你搞懂电工作业怎么操作的全流程。…

2026/11/8 0:00:27

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/8 0:00:27

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑