Python в узле Code n8n: возможности и ограничения

Python выполняется в узле Code n8n через Pyodide или нативное выполнение, с чёткими ограничениями по внешним пакетам. Практический обзор.

Узел Code в n8n можно использовать как с JavaScript, так и с Python, однако с заметными различиями: JavaScript выполняется нативно, Python проходит дополнительный этап компиляции и поэтому работает медленнее, а доступность внешних пакетов Python сильно зависит от того, развёрнут ли n8n самостоятельно (self-hosted) или используется облачная версия. Состояние на: август 2026 года.

Какие среды выполнения Python предлагает n8n?

n8n предлагает, согласно официальной документации, два разных способа выполнения Python в узле Code. Первоначальный вариант использует Pyodide, порт CPython в WebAssembly, который существенно ограничивает доступные пакеты. Начиная с версии 1.111.0 n8n дополнительно поддерживает нативное выполнение Python через собственные Task Runner, которое считается стабильным начиная с n8n версии 2. Какой вариант фактически активен, зависит от конфигурации инстанса. Обзор обоих способов программирования в инструменте даёт вводная страница о коде в n8n.

Какие пакеты можно использовать на практике?

Здесь кроется самое большое ограничение, и оно заметно различается в зависимости от режима работы:

  • n8n Cloud: Ни в режиме Pyodide, ни в нативном режиме Python нельзя импортировать внешние библиотеки.
  • Self-Hosted с нативным Python: Внешние модули возможны, если используемый образ Runner их содержит и они явно разрешены.
  • Self-Hosted с Pyodide: Выбор пакетов изначально ограничен средой WebAssembly, независимо от собственной конфигурации.

В сообществе n8n регулярно появляются похожие сообщения на эту тему: запросы на возможность напрямую устанавливать пакеты, сообщения об ошибках из-за неразрешённых внешних пакетов, а также упоминания того, что в некоторых облегчённых Docker-образах, например на базе Alpine, Python приходится устанавливать дополнительно. Тем, кто хочет продуктивно работать с пакетами Python, при self-hosting редко удаётся обойтись без собственного, адаптированного Docker-образа.

Почему режим Python работает медленнее, чем JavaScript?

Согласно документации n8n, обработка кода Python в принципе занимает больше времени, чем обработка JavaScript, поскольку перед выполнением самого кода требуются дополнительные этапы компиляции. Для отдельных, редко выполняемых узлов это практически не имеет значения. Однако в workflow с высокой частотой выполнения или большими объёмами данных в узле Code разница может заметно сказаться на общем времени работы, что стоит учитывать при выборе между JavaScript и Python, если важна производительность.

Когда лучше выбрать другой узел?

Не каждая задача должна решаться в узле Code, даже если технически это возможно. Для доступа к файловой системе документация рекомендует узел Read/Write File From Disk, а для HTTP-запросов, узел HTTP Request, вместо того чтобы воссоздавать эти функции в собственном коде на Python или JavaScript. Это даёт два преимущества: специализированные узлы оптимизированы для workflow n8n и имеют собственную обработку ошибок, а сам workflow остаётся понятным для коллег без навыков программирования. Узел Code лучше всего подходит для логики преобразования данных, которую нельзя, или можно лишь с трудом, реализовать с помощью стандартных узлов.

Стоит ли вообще использовать Python вместо JavaScript?

Для большинства автоматизаций в n8n JavaScript является более прагматичным выбором уже хотя бы из-за скорости и нативной поддержки. Python становится интересен прежде всего тогда, когда команда уже обладает знаниями Python или когда нужно перенести существующую логику обработки данных из скрипта на Python. В более сложных проектах автоматизации, например во взаимодействии с ИИ-агентами, стоит заранее посмотреть на доступность пакетов в собственном инстансе, чтобы запланированная логика впоследствии действительно была работоспособна.

Часто задаваемые вопросы о Python в узле Code n8n

Могу ли я устанавливать любые пакеты Python в n8n Cloud?

Нет, в n8n Cloud нельзя импортировать внешние библиотеки ни в режиме Pyodide, ни в нативном режиме Python. Тем, кому необходимы определённые пакеты, потребуется самостоятельно развёрнутый (self-hosted) инстанс с подходяще настроенным образом Runner.

В чём разница между Pyodide и нативным Python?

Pyodide, это порт CPython на WebAssembly с ограниченной доступностью пакетов, тогда как доступное с версии 1.111.0 нативное выполнение Python работает через Task Runner и при self-hosting предоставляет больше гибкости в отношении внешних модулей.

Работает ли Python в узле Code так же быстро, как JavaScript?

Нет, согласно документации обработка кода Python занимает больше времени, чем JavaScript, поскольку требуются дополнительные этапы компиляции. В отдельных узлах это редко заметно, а при высокой частоте выполнения это может заметно повлиять на время работы.

Стоит ли программировать доступ к файлам и HTTP-запросы в узле Code?

Лучше не стоит. Для этого n8n рекомендует узел Read/Write File From Disk и, соответственно, узел HTTP Request. Это позволяет сохранить workflow удобным для поддержки и использовать встроенную обработку ошибок этих узлов вместо собственного кода.

Симон Гловик, основатель NordFlux
Об авторе

Основатель NordFlux. Семь лет опыта, от веба и SEO до автоматизации в масштабах концерна, сегодня прагматично для среднего бизнеса и с немецким суверенитетом данных.

Сертификаты

  • Сертифицирован Microsoft — PL-900 и AZ-900
  • Сертифицирован UiPath — Automation Developer Associate
Все статьи
Бесплатный первичный анализ

Конкретные вопросы по автоматизации или КИ?

В рамках бесплатного первичного анализа мы напрямую обсудим Ваш случай. Без обязательств.