Скрипты на Python (движок Pyodide)
Выбор Python для скрипта запускает его во встроенном движке по тем же правилам песочницы, что и JavaScript. Движок скачивается один раз, по щелчку, и дальше работает полностью офлайн.
Senzoukria · Документация · Обновлено: сентябрь 2026
Где найти
- Где
- Страница «Скрипты» → Язык → Python, затем полоса «Движок Python»
- Загрузка
- Шесть файлов, около 16,4 МБ суммарно, скачиваются один раз
- В комплекте
- numpy, в виде колеса, совместимого с ABI движка
- Бюджет запуска
- 120 с на старт движка; у загрузки свой бюджет в 600 с
- Бюджет скрипта
- 2 с на запуск, как и в JavaScript
Что это даёт
Язык выбирается для каждого скрипта и хранится вместе с ним. Оба языка получают одни и те же данные и возвращают одни и те же формы, поэтому перенесённый с одного на другой скрипт не теряет ориентиров: колонки бара доступны под своими именами, расчётные помощники сохраняют названия, а построители выходов соответствуют один к одному.
Старт движка — полноценное состояние на собственной полосе, и его никогда не путают с запуском скрипта. Это различие важно: движок стартует секундами, тогда как у запуска скрипта бюджет в две секунды, и если свести одно к другому, каждый корректный скрипт на Python выглядел бы как бесконечный цикл.
Ничто не скачивается само по себе. Установка — это щелчок; автоматический старт происходит, только когда файлы уже на месте.
Состояния движка
| Состояние | По умолчанию | Что меняет |
|---|---|---|
| Не установлен | начальное | Предлагает «Установить движок Python» и называет размер разовой загрузки. |
| Загрузка | — | Показывает процент и предлагает «Отменить загрузку». |
| Запуск | — | Движок стартует; скрипты ждут, а не падают. |
| Движок готов | — | Показывает версию и время старта в миллисекундах, предлагает «Удалить движок». |
| Движок недоступен | — | Сообщает, что движок не стартовал, с исходным сообщением, и предлагает «Повторить». Скрипты на JavaScript это не затрагивает. |
| Примечание об офлайне | всегда | После установки движок работает полностью офлайн — ни скрипт, ни данные никуда не отправляются. |
Несовпадение языка
Вставка скрипта на Python в черновик, у которого ещё стоит JavaScript, раньше давала синтаксическую ошибку с произвольным номером строки и совет про console.log тому, кто пишет на Python. Теперь страница проверяет, противоречит ли код объявленному языку, и прямо об этом сообщает, с кнопкой переключения на распознанный язык.
Проверка намеренно узкая: она ищет только те признаки, которые в другом языке являются явными синтаксическими ошибками, и молчит, когда в файле есть признаки обоих, — наполовину переведённому скрипту нечего сказать полезного. Пропущенное распознавание лишь возвращает вас к прежнему невнятному сообщению; выдуманное отправило бы вас менять язык, который был верным.
Ограничения и подводные камни
- Смена языка не переводит ваш код: он остаётся ровно таким, как написан, и не запустится, пока вы его не перепишете.
- Файлы движка скачиваются с собственного ретранслятора продукта — единственного удалённого источника, который разрешает политика содержимого приложения.
- Версия движка зафиксирована и сверяется со скомпилированным бинарником; смешение версий отклоняется, а не приводит к нечитаемым сбоям.
- Бэктест стратегии на Python выполняет цикл на стороне Python, а не пересекает границу языков на каждом баре, и тест на паритет сравнивает её сделки с циклом на JavaScript бар за баром. print() уходит в журнал с префиксом текущего бара.
Связанные страницы
Эта страница на других языках
Частые вопросы
- Нужно ли устанавливать Python на компьютер?
- Нет. Движок встроен и скачивается приложением один раз. Он не использует и не требует системной установки Python.
- Какие библиотеки доступны?
- Стандартная библиотека плюс numpy, который поставляется как колесо, совместимое с ABI движка. Доступа к сети из песочницы нет, поэтому пакеты нельзя скачать во время выполнения.
- Почему мой скрипт на Python падает с синтаксической ошибкой на несуществующей строке?
- Это характерный признак несовпадения языка: к вашему исходнику дописана обёртка на другом языке. Смените язык скрипта и запустите снова.