Zum Inhalt springen

Python mit Elide

Führen Sie Python 3.13 mit Elide und den Argumenten von CPython aus: Python-Komponente installieren, mitgelieferte Standardbibliothek, Interop mit JavaScript und bekannte Einschränkungen.

Auf dieser Seite

Die Python-Unterstützung ist in 1.6.0 experimentell.

Keine CPython-Installation

Elide führt Python 3.13 und seine Standardbibliothek selbst aus.

Fügen Sie die optionale Python-Komponente hinzu:

elide setup python

--channel=release oder --channel=nightly wählt den Kanal; --force installiert neu. Installationen über apt und RPM können sie nicht hinzufügen; siehe Installation. Ohne die Komponente geben Python-Befehle Python support is not installed. Run 'elide setup python' to add it. aus und beenden sich mit 2.

Python ausführen

elide python nimmt dieselben Argumente wie 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 -

Argumente nach dem Skript, nach -c CMD oder -m MODULE gehen an das Programm. Ein bloßes elide python startet in einem Terminal die REPL und liest andernfalls von der Standardeingabe.

0:09 / 0:09

Die allgemeinen Befehle führen .py-Dateien mit demselben sys.argv aus:

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

Interpreter-Optionen

Setzen Sie diese vor das Skript, -c oder -m. elide --help-all listet sie unter “Python interpreter options” auf.

FlagWirkung
-c CMDCMD als Programm ausführen; nachfolgende Argumente werden zu sys.argv[1:].
-m MODULEEin Bibliotheksmodul als __main__ ausführen.
-sDas Site-Verzeichnis des Benutzers nicht zu sys.path hinzufügen.
-IIsolierter Modus.
-EPYTHON*-Umgebungsvariablen ignorieren.
-SBeim Start kein import site.
-PKeinen potenziell unsicheren Pfad vor sys.path stellen.
-BKeine Bytecode-Dateien schreiben.
-uUngepufferte Standardausgabe und Standardfehlerausgabe.
-OOptimierungsstufe; für -OO wiederholen.
-bBei bytes/str-Vergleichen warnen; wiederholen, um Fehler auszulösen.
-W ARGWarnungssteuerung; wiederholbar.
-xAus Kompatibilitätsgründen akzeptiert; ohne Wirkung.

Zwei Flags sind standardmäßig aktiv: -S, weil Elide sys.path selbst aufbaut und site für die Startzeit überspringt, und -B. sys.flags meldet beide. Um site zu importieren (.pth-Dateien, sitecustomize), übergeben Sie -X polyglot.python.NoSiteFlag=false; um Bytecode zu schreiben, übergeben Sie -X polyglot.python.DontWriteBytecodeFlag=false.

Standardbibliothek

Die Standardbibliothek enthält json, pathlib, sqlite3, ssl, zlib und ctypes. bz2 und lzma brauchen kein libbz2 oder liblzma vom System. Zu den Datenbanktreibern, die Elide mitbringt, siehe Datenbanken.

Interop mit JavaScript

Mit --interop wertet Python JavaScript über das eingebaute Modul elide aus:

# sum.py
from elide import js

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

JavaScript und TypeScript importieren den Default-Export eines Python-Moduls:

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

Ohne --interop schlagen diese Aufrufe fehl. Siehe Sprachen und Interop.

Pakete von Drittanbietern

Elide installiert keine PyPI-Pakete: elide install überspringt dependencies.pypi, und elide install --ecosystems=pypi beendet sich mit 2. Um Pakete aus einer virtuellen Umgebung für Python 3.13 zu laden, setzen Sie VIRTUAL_ENV:

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

Elide liest das Verzeichnis lib/python3.13/site-packages der Umgebung.

Siehe Pakete und virtuelle Umgebungen; zu unittest und pytest siehe Python-Tests.

Tracing und Metriken

Die opentelemetry-API und logging exportieren Traces, Metriken und Logs über Elide, ohne installiertes SDK; siehe OpenTelemetry in Python.

Bekannte Einschränkungen

  • C-Erweiterungen: Manche C-Erweiterungsmodule lassen sich nicht laden.
  • macOS: Die Isolierung nativer Module ist nicht verfügbar.
  • WebAssembly-SIMD: Die Installation von Python deaktiviert SIMD; siehe WebAssembly mit Elide.
  • Unterschiede zu CPython: Manche Randfälle verhalten sich anders als in CPython 3.13; siehe die Kompatibilitätsmatrix.

Beispiele

War diese Seite hilfreich?