还在为 n8n 的 JavaScript 语法头秃?Python 党终于等到这一天
兄弟们,我是 N8N大学 的主编。混迹于低代码圈子里,我太懂那种感觉了:看着 n8n 强大的可视化流,心里痒痒的,想写点复杂的逻辑,结果一看到要写 JavaScript,瞬间劝退。特别是对于 Python 开发者来说,习惯了 Pandas 的数据处理、Requests 的便捷请求,再去适应 JS 的 Promise 和回调地狱,简直是一种折磨。
好消息是,n8n 官方终于听到了我们的呼声!从 1.39.0 版本开始,n8n 引入了原生的 Python 支持。这意味着你可以在熟悉的 Python 环境里直接写脚本,处理数据,调用库。今天,笔者就手把手带你打通这“任督二脉”,让你在 n8n 里也能写出优雅的 Python 代码。
准备工作:先磨刀,再砍柴
在开始之前,咱们得确认一下“装备”。虽然 n8n 原生支持 Python,但默认情况下,它可能只携带了最基础的 Python 环境。
- n8n 版本: 确保你的 n8n 版本在
1.39.0以上。如果版本过低,你连 Python 节点都找不着。 - 环境权限: 如果你是用 Docker 部署的 n8n,通常没问题。但如果你需要安装第三方 Python 库(比如
numpy或pandas),你需要确保 n8n 容器有网络权限,并且你拥有执行pip install的权限。 - 一颗愿意折腾的心: 这里的“折腾”不是指复杂的配置,而是指适应新的工作流逻辑。
核心实操:三步开启 Python 之旅
很多教程讲得云里雾里,笔者直接给你最简路径。跟着做,不出意外的话,五分钟内你就能跑通第一个 Python 脚本。
第一步:找到传说中的 Python 节点
打开你的 n8n 工作流编辑器,点击加号添加节点。在搜索框里输入 Python。你会看到一个图标带有 Python 字样的节点,全名叫做 Python(有时在 Code 分类下)。把它拖拽到画布上。
这个节点就是你的主战场。它和传统的 JS 节点不同,它提供了一个专门的 Python 代码编辑器。
第二步:编写你的第一行 Python 代码
双击打开 Python 节点。你会看到代码输入框。n8n 的 Python 节点非常智能,它会自动处理输入和输出。
在 n8n 中,输入数据通过 items 变量传入,而输出数据则需要赋值给 items 变量。来看个简单的例子:
# 这里的代码是纯 Python
# n8n 会自动把上个节点的数据转为 Python 的列表
import json
# 假设上个节点传过来的数据是 [{"json": {"name": "n8n大学"}}]
# 我们可以通过 items 访问
for item in items:
# 获取输入的 name
name = item['json']['name']
# 做点处理
greeting = f"你好, {name}!Python 运行正常。"
# 更新 item 的 json 部分
item['json']['message'] = greeting
# 必须返回 items,这样 n8n 才知道怎么往下传
# 注意:一定要把处理后的 items 返回
items
点击运行节点,你就能在右侧看到处理后的结果。是不是比 JS 那堆 $json 爽快多了?
第三步:处理复杂数据与依赖
既然是 Python,怎么能少了 pandas 或者 requests?如果你需要在 n8n 里爬个虫或者做个数据分析,普通的 Python 节点可能因为缺少库而报错。
如何安装第三方库?
如果你是通过 Docker 部署的,你需要进入容器内部执行安装命令:
- 进入容器:
docker exec -it n8n /bin/bash - 更新 pip 并安装库:
pip install pandas requests
安装完成后,你就可以在 Python 节点里直接 import pandas as pd 了。这才是真正的“生产力工具”!
避坑指南:笔者踩过的雷,你别踩
虽然功能很香,但毕竟是新功能,实操中还是有几个坑需要注意。这里分享两个最典型的:
1. 输入数据的格式转换问题
n8n 的数据结构是 {json: {...}, pairedItem: ...}。在 Python 里,这直接对应字典。但如果你从 JS 节点切过来,可能会搞混数据层级。建议在 Python 节点开头先用 print(items) 调试一下,看清楚数据结构再动手处理。
2. 环境残留导致的报错
如果你在 Docker 里反复修改 Python 版本或安装库,有时候 n8n 会缓存旧的环境。如果遇到莫名其妙的 ModuleNotFoundError,尝试重启 n8n 容器,或者检查你当前进入的容器 Shell 是不是挂载了错误的 Python 路径。记住,docker exec 进去的环境要和 n8n 运行的环境一致。
FAQ:关于 n8n Python 支持的常见疑问
Q1: n8n 的 Python 节点是完全独立的沙盒环境吗?
A: 是的。它运行在一个独立的子进程或容器环境中,与 n8n 的主 Node.js 进程隔离。这意味着你不能在 Python 里直接调用 n8n 的 Node.js API,数据传递仅限于 JSON 格式。
Q2: 我可以在 Python 节点里使用 async/await 吗?
A: 目前 Python 节点在 n8n 中是同步执行的。虽然 Python 本身支持异步,但 n8n 的执行模型是基于同步的 IO 操作。如果需要并发请求,建议在节点内部使用多线程库(如 threading),或者将任务拆分成多个并行的 n8n 节点。
Q3: 既然有了 Python 节点,我还需要 JavaScript 节点吗?
A: 看场景。如果你的生态主要围绕 Node.js 插件,或者需要操作 n8n 的特定 API 对象,JS 节点依然是首选。但如果是做数据清洗、调用 Python SDK、或者进行复杂的数学计算,Python 节点绝对是你的不二之选。
总结与资源
Python 节点的加入,让 n8n 从一个单纯的自动化工具,进化成了一个具备专业级数据处理能力的混合平台。对于 Python 党来说,这绝对是今年最值得兴奋的更新。
如果你在安装或使用过程中遇到了其他奇怪的报错,欢迎在 N8N大学 的社区留言。记住,技术是用来服务生活的,不要让语法成为你自动化的绊脚石。
相关资源推荐:
- n8n 官方 Python 节点文档:建议阅读最新版 API
- N8N大学 GitHub 仓库:我们会持续更新 Python 脚本示例