一、先明确一件事(非常关键)
在 n8n 2.x 中:
Python Code Node ≠ 主 n8n 容器执行 Python Code Node = Task Runner 容器执行
也就是说:
介绍 n8n 2.x 版本通过 Task Runners 实现原生 Python 代码执行的自托管部署方案。涵盖架构原理、Docker Compose 配置、Code 节点使用验证、第三方库扩展及常见问题排查。旨在帮助用户在不污染主容器的情况下安全运行 Python 脚本,适用于轻数据处理及逻辑判断场景。
在 n8n 2.x 中:
Python Code Node ≠ 主 n8n 容器执行 Python Code Node = Task Runner 容器执行
也就是说:
┌──────────────┐ │ n8n main │ (UI / Workflow / Orchestration) │ │ │ Code Node │ └──────┬───────┘ │ Task execution ┌──────▼──────────────────┐ │ n8n Task Runner │ │ (Python / JS sandbox) │ │ │ │ ✔ Python 3.x │ │ ✔ 执行 Code Node(Python)│ └──────────────────────────┘
n8n/
├─ docker-compose.yml
├─ .env
.env 文件N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=admin123
N8N_ENCRYPTION_KEY=change_this_to_random_string
DB_TYPE=sqlite
(你可以后面再换 Postgres)
docker-compose.yml(重点)version: "3.9"
services:
n8n:
image: n8nio/n8n:2
container_name: n8n
restart: always
ports:
- "5678:5678"
env_file:
- .env
environment:
# 开启 task runners
- N8N_RUNNERS_ENABLED=true
# 使用 external 模式(必须)
- N8N_RUNNERS_MODE=external
# runner 通信
- N8N_RUNNERS_AUTH_TOKEN=super-secret-token
- N8N_RUNNERS_TIMEOUT=300
# 基本设置
- GENERIC_TIMEZONE=Asia/Shanghai
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- n8n-runner
n8n-runner:
image: n8nio/runners:latest
container_name: n8n-runner
restart: always
environment:
- N8N_RUNNERS_AUTH_TOKEN=super-secret-token
- N8N_RUNNERS_GRACEFUL_SHUTDOWN_TIMEOUT=30
volumes:
- runner_data:/data
volumes:
n8n_data:
runner_data:
⚠️ token 必须一致,否则 Code Node 无法执行
docker compose up -d
浏览器访问:
http://localhost:5678
👉 Python (Native) (如果你看不到 Python,说明 Runner 没连上)
items = []
for item in _items:
value = item["json"].get("value", 0)
items.append({
"json": {
"original": value,
"result": value * 2
}
})
return items
{
"value": 10
}
{
"original": 10,
"result": 20
}
✔️ 这是原生 Python,不是 Pyodide,不是 CLI
| 名称 | 含义 |
|---|---|
_items | 输入 items |
item["json"] | JSON 数据 |
return items | 输出 |
❌ 不支持 $json.xxx
❌ 不支持 JS 写法
FROM n8nio/runners:latest
RUN pip install pandas numpy
docker build -t n8n-runner-python:latest .
n8n-runner:
image: n8n-runner-python:latest
N8N_RUNNERS_MODE 不是 externalNo runner available你现在已经可以:
但仍要注意:

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online