Introduction

Installation

Questions fréquemment posées

Syntaxe, mots-clés et fonctions intégrées

Distribution standard

Implémentation de import

Interface avec le navigateur

Modules intégrés propres à Brython

Travailler avec Brython

Recettes

 

Implémentation de import

Vous pouvez installer des modules ou des paquetages Python dans votre application, en les mettant à la racine de l'application ou dans des répertoires comportant un fichier __init.py__.

Noter que les modules doivent être encodés en utf-8 ; la déclaration d'encodage en début de module n'est pas prise en compte.

Par exemple l'application peut être composée des fichiers et répertoires suivants :

app.html
brython.js
brython_modules.js
brython_stdlib.js
index.html
users.py
utils.py
+ app
    __init__.py
    records.py
    tables.py

Un script Python dans app.html peut exécuter les imports

import users
import app.records

Si la bibliothèque standard a été insérée dans la page par

<script type="text/javascript" src="brython_stdlib.js"></script>

le script peut aussi exécuter

import datetime
import re

Pour importer des modules ou des paquetages, Brython utilise le même mécanisme que CPython : pour résoudre "import X", le programme recherche un fichier dans plusieurs emplacements :

  • un module X dans la bibliothèque standard
  • un fichier X.py dans le répertoire courant
  • un fichier __init__.py dans le répertoire X

Comme le navigateur n'a pas accès directement au système de fichiers, la recherche de l'existence d'un fichier doit être effectuée par un appel Ajax, qui renvoie une erreur s'il n'y a pas de fichier à l'adresse recherchée.

Optimisation

Le mécanisme décrit ci-dessus présente deux inconvénients :

  • la taille assez importante de brython_stdlib.js (plus de 3 Mo)
  • le temps pris par les appels Ajax

Pour optimiser les imports, si Brython a été installé par pip, vous pouvez générer un fichier brython_modules.js qui ne contient que les modules utilisés par l'application.

Pour cela il faut ouvrir une console système, se positionner dans le répertoire de l'application, et exécuter

python -m brython --modules

Vous pouvez ensuite remplacer toutes les occurrences de

<script type="text/javascript" src="brython_stdlib.js"></script>

par

<script type="text/javascript" src="brython_modules.js"></script>