Upgrade path when moving from Pyodide to Python Native

Describe the problem/error/question

We’ve been using n8n for a while now, and have many workflows running. Some use the old Python Pyodide implementation of the Code node - not too many, but they’re critical to keep running.

Pyodide is being removed in 2.0 and replaced with the new Python Native in external task runner mode. We tried to enable this today, but as soon as we did, the old Pyodide nodes stopped working.

This confuses us a bit - if this is true, it doesn’t seem like there is an actual upgrade path for people using Pyodide in active workflows?

Or are we missing something here?

Having workflows not working while we upgrade all of the nodes would be a bit catastrophic for us.

What is the error message (if any)?

Please share your workflow

Share the output returned by the last node

Information on your n8n setup

  • n8n version: 1.123.2
  • Database (default: SQLite): Postgres
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app): Kubernetes
  • Operating system:

Hey @HenrikOssipoff !

As task runner were included earlier so we can adapt our code , the “replace” is not a “plug and play” or zero downtime upgrade… inthink n8n called “this a breaking change and say that any Code node using the legacy python parameter (Pyodide) must be manually updated to pythonNative, and scripts may need manual changes.”

So just switching (replace) doesn’t mean all the libraries works … human intervention is a must.

Cheers!

Yeah it sounds like it.

I would have expected there to be a period where it was possible to run both Pyodide and Python Native in parallel during the 1.x versions.

That would have enabled people who used the old Python Code Nodes extensively to migrate to the Python Native task runners without downtime in a safe manner.