Aller au contenu

Python avec Elide

Exécutez Python 3.13 avec Elide et les arguments de CPython : installation du composant Python, bibliothèque standard incluse, interopérabilité avec JavaScript et limites connues.

Sur cette page

La prise en charge de Python est expérimentale dans la version 1.6.0.

Aucune installation de CPython

Elide exécute lui-même Python 3.13 et sa bibliothèque standard.

Ajoutez le composant Python optionnel :

elide setup python

--channel=release ou --channel=nightly choisit le canal ; --force le réinstalle. Les installations par apt et RPM ne peuvent pas l’ajouter ; voir Installation. Sans le composant, les commandes Python affichent Python support is not installed. Run 'elide setup python' to add it. et se terminent avec le code 2.

Exécuter Python

elide python accepte les mêmes arguments que 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 -

Les arguments placés après le script, -c CMD ou -m MODULE sont transmis au programme. elide python seul lance le REPL dans un terminal ; sinon, il lit l’entrée standard.

0:09 / 0:09

Les commandes générales exécutent les fichiers .py avec le même sys.argv :

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

Options de l’interpréteur

Placez-les avant le script, -c ou -m. elide --help-all les liste sous “Python interpreter options”.

OptionEffet
-c CMDExécute CMD comme programme ; les arguments suivants deviennent sys.argv[1:].
-m MODULEExécute un module de bibliothèque comme __main__.
-sN’ajoute pas le répertoire site de l’utilisateur à sys.path.
-IMode isolé.
-EIgnore les variables d’environnement PYTHON*.
-SN’effectue pas import site au démarrage.
-PN’ajoute pas en tête de sys.path un chemin potentiellement dangereux.
-BN’écrit pas de fichiers de bytecode.
-uSortie standard et sortie d’erreur sans tampon.
-ONiveau d’optimisation ; répétez pour -OO.
-bAvertit lors des comparaisons bytes/str ; répétez pour lever des erreurs.
-W ARGContrôle des avertissements ; répétable.
-xAccepté pour compatibilité ; sans effet.

Deux options sont actives par défaut : -S, car Elide construit lui-même sys.path et ignore site pour accélérer le démarrage, et -B. sys.flags indique les deux. Pour importer site (fichiers .pth, sitecustomize), passez -X polyglot.python.NoSiteFlag=false ; pour écrire le bytecode, passez -X polyglot.python.DontWriteBytecodeFlag=false.

Bibliothèque standard

La bibliothèque standard comprend json, pathlib, sqlite3, ssl, zlib et ctypes. bz2 et lzma n’ont pas besoin de libbz2 ni de liblzma sur le système. Pour les pilotes de base de données inclus dans Elide, voir Bases de données.

Interopérabilité avec JavaScript

Avec --interop, Python évalue du JavaScript via le module intégré elide :

# sum.py
from elide import js

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

JavaScript et TypeScript importent l’export par défaut d’un module Python :

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

Sans --interop, ces appels échouent. Voir Langages et interopérabilité.

Paquets tiers

Elide n’installe pas de paquets PyPI : elide install ignore dependencies.pypi, et elide install --ecosystems=pypi se termine avec le code 2. Pour charger des paquets depuis un environnement virtuel Python 3.13, définissez VIRTUAL_ENV :

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

Elide lit le répertoire lib/python3.13/site-packages de l’environnement.

Voir Paquets et environnements virtuels ; pour unittest et pytest, voir Tests Python.

Traces et métriques

L’API opentelemetry et logging exportent traces, métriques et journaux via Elide, sans SDK à installer ; voir OpenTelemetry en Python.

Limites connues

  • Extensions C : certains modules d’extension C ne se chargent pas.
  • macOS : l’isolation des modules natifs n’est pas disponible.
  • SIMD WebAssembly : l’installation de Python le désactive ; voir WebAssembly avec Elide.
  • Différences avec CPython : certains cas limites se comportent différemment de CPython 3.13 ; voir la Matrice de compatibilité.

Exemples

Cette page vous a-t-elle aidé ?