Перейти к содержимому

Python в Elide

Запускайте Python 3.13 в Elide с аргументами CPython: установка компонента Python, встроенная стандартная библиотека, взаимодействие с JavaScript и известные ограничения.

На этой странице

Поддержка Python в 1.6.0 экспериментальная.

CPython устанавливать не нужно

Elide сам выполняет Python 3.13 и его стандартную библиотеку.

Добавьте необязательный компонент Python:

elide setup python

--channel=release или --channel=nightly выбирает канал; --force переустанавливает компонент. При установке через apt и RPM его добавить нельзя; см. Установка. Без компонента команды Python выводят Python support is not installed. Run 'elide setup python' to add it. и завершаются с кодом 2.

Запуск Python

elide python принимает те же аргументы, что и python:

elide python app.py --name Elide --count 2   # sys.argv: ['app.py', '--name', 'Elide', '--count', '2']
elide python -c 'import sys; print(sys.version)'
elide python -m json.tool input.json
echo 'print("from stdin")' | elide python -

Аргументы после скрипта, -c CMD или -m MODULE передаются программе. elide python без аргументов запускает REPL в терминале, а в остальных случаях читает стандартный ввод.

0:09 / 0:09

Общие команды запускают файлы .py с тем же sys.argv:

elide app.py
elide run app.py
elide -l python -s 'print(1 + 1)'

Параметры интерпретатора

Указывайте их перед скриптом, -c или -m. elide --help-all перечисляет их в разделе “Python interpreter options”.

ФлагДействие
-c CMDВыполнить CMD как программу; последующие аргументы попадают в sys.argv[1:].
-m MODULEЗапустить модуль библиотеки как __main__.
-sНе добавлять пользовательский каталог site в sys.path.
-IИзолированный режим.
-EИгнорировать переменные окружения PYTHON*.
-SНе выполнять import site при запуске.
-PНе добавлять в начало sys.path потенциально небезопасный путь.
-BНе записывать файлы байт-кода.
-uНебуферизованные стандартный вывод и поток ошибок.
-OУровень оптимизации; повторите для -OO.
-bПредупреждать при сравнении bytes/str; повторите, чтобы выбрасывать ошибки.
-W ARGУправление предупреждениями; можно повторять.
-xПринимается для совместимости; ни на что не влияет.

Два флага включены по умолчанию: -S, потому что Elide сам формирует sys.path и пропускает site ради скорости запуска, и -B. sys.flags сообщает об обоих. Чтобы импортировать site (файлы .pth, sitecustomize), передайте -X polyglot.python.NoSiteFlag=false; чтобы записывать байт-код, передайте -X polyglot.python.DontWriteBytecodeFlag=false.

Стандартная библиотека

Стандартная библиотека включает json, pathlib, sqlite3, ssl, zlib и ctypes. Для bz2 и lzma не нужны системные libbz2 и liblzma. О драйверах баз данных, которые входят в Elide, см. Базы данных.

Взаимодействие с JavaScript

С флагом --interop Python выполняет JavaScript через встроенный модуль elide:

# sum.py
from elide import js

print(js("[1, 2, 3].reduce((a, b) => a + b, 0)"))
elide --interop python sum.py

JavaScript и TypeScript импортируют экспорт по умолчанию модуля Python:

// main.mjs
import mod from "./mod.py";
console.log(mod.hello());
elide --interop run main.mjs

Без --interop эти вызовы завершаются ошибкой. См. Языки и взаимодействие.

Сторонние пакеты

Elide не устанавливает пакеты из PyPI: elide install пропускает dependencies.pypi, а elide install --ecosystems=pypi завершается с кодом 2. Чтобы загружать пакеты из виртуального окружения Python 3.13, задайте VIRTUAL_ENV:

export VIRTUAL_ENV=/path/to/venv
elide python app.py

Elide читает каталог lib/python3.13/site-packages этого окружения.

См. Пакеты и виртуальные окружения; об unittest и pytest см. Тесты Python.

Трассировка и метрики

API opentelemetry и logging экспортируют трассировки, метрики и логи через Elide без установки SDK; см. OpenTelemetry в Python.

Известные ограничения

  • Расширения на C: некоторые модули расширений на C не загружаются.
  • macOS: изоляция нативных модулей недоступна.
  • SIMD в WebAssembly: установка Python его отключает; см. WebAssembly в Elide.
  • Отличия от CPython: некоторые пограничные случаи ведут себя иначе, чем в CPython 3.13; см. Матрица совместимости.

Примеры

Была ли эта страница полезной?