- PyScript est une plateforme open source qui permet d’exécuter du code Python dans le navigateur, transformant la page web elle-même en environnement d’exécution Python
- Elle met en avant la combinaison entre l’universalité du web et l’écosystème Python, avec l’idée que partout où il y a un navigateur, Python peut s’exécuter
- Comme les applications fonctionnent dans le navigateur sans installation complexe, il est possible de créer des applications web avec la syntaxe facile à apprendre de Python
- Le code s’exécute dans le navigateur de l’utilisateur, ce qui réduit le besoin d’infrastructure coûteuse, et les résultats peuvent être partagés via une URL du web
- Elle vise à la fois les débutants et les utilisateurs avancés, et met en avant comme caractéristiques clés la facilité, l’expressivité, l’extensibilité, le partage, l’universalité, la sécurité et la puissance
Environnement d’exécution Python dans le navigateur
- PyScript est une plateforme open source conçue pour exécuter Python dans le navigateur
- On peut par exemple exécuter du code Python dans du HTML avec
script type="py"- Le code d’exemple exécute
print('You can!')dans le document du navigateur
- Le code d’exemple exécute
- L’orientation centrale de PyScript consiste à combiner deux écosystèmes technologiques, le web et Python
- Le web est une plateforme informatique universelle à l’échelle mondiale
- Python est l’un des langages de programmation les plus populaires au monde
- Au final, le message mis en avant est que partout où il y a un navigateur, Python peut s’exécuter
Premiers pas et caractéristiques de la plateforme
- Il est possible d’essayer facilement et gratuitement sur PyScript.com
- La documentation s’adresse aussi bien aux débutants qu’aux utilisateurs avancés
- Les ressources communautaires permettent de voir ce qu’il est possible de créer avec PyScript
- Il est possible d’échanger avec d’autres utilisateurs de PyScript via Discord
- Les caractéristiques mises en avant par PyScript sont les suivantes
- Easy: les applications s’exécutent dans le navigateur sans installation complexe
- Expressive: il est possible de créer des applications avec un langage puissant, populaire et facile à apprendre, comme Python
- Scalable: le code s’exécute dans le navigateur de l’utilisateur, ce qui évite de recourir à une infrastructure coûteuse
- Shareable: les applications peuvent être partagées via une URL du web
- Universal: partout où un navigateur fonctionne, le code peut aussi s’exécuter
- Secure: le tout fonctionne sur le navigateur, une plateforme informatique éprouvée
- Powerful: cela permet de tirer parti à la fois des atouts du web et de Python
1 commentaires
Avis sur Hacker News
Si vous voulez voir un exemple d’utilisation, le dashboard Panel des statistiques de criminalité de Dallas est disponible ici : https://crimede-coder.com/graphs/Dallas_Dashboard
Le démarrage prend environ 1 minute, avec l’installation de plusieurs bibliothèques Python et le chargement d’un jeu de données externe de 5 Mo. Une fois chargé, c’est assez réactif et ça fonctionne bien aussi sur iPhone
Beaucoup d’entreprises avec lesquelles je travaille utilisent la version gratuite de Tableau et mettent les données à jour manuellement, parce que la version gratuite n’autorise pas la connexion directe à un entrepôt de données. Ceci est une alternative gratuite, avec GitHub Actions qui génère un fichier CSV compressé récupéré par l’environnement
Je m’attendais à ce que le bootstrap de Python pour faire tourner une app Panel dans Safari sur iPad prenne bien plus de 8 secondes. Un rafraîchissement avec Shift a pris environ 6 secondes
Je me demande aussi si le problème est qu’elles ont besoin de Python pour l’analyse de données et ne veulent pas l’exécuter côté serveur à cause des coûts de serveur
Même après avoir vu la page d’accueil, j’étais perplexe, et après avoir lu la documentation je ne sais toujours pas exactement ce que c’est
En bricolant un peu, j’ai réussi à afficher « Hello World » en l’intégrant à un site web. Cela ressemble à un script qui cherche les scripts de
type="py"et transpile Python vers JavaScript via PyodideMais la démo de la page d’accueil est un REPL et le titre parle de « plateforme », donc je reste perplexe
jsest mappé sur le véritable objetwindowet fournit une API qui appelle les méthodes du DOM via une sorte d’objet ProxyJ’espérais pouvoir exécuter Python dans la console du navigateur
En quoi est-ce différent de Pyodide ? https://pyodide.org/en/stable/
PyScript peut utiliser Pyodide ou MicroPython, et MicroPython est en fait assez petit. Au-dessus du runtime, PyScript va au-delà de la simple exécution de code Python : il fournit des fonctionnalités pratiques et des améliorations de confort pour utiliser réellement Python en programmation web
J’ai récemment creusé assez profondément l’exécution d’apps CLI Python dans le navigateur avec PyScript
Tout du long, cela m’a semblé hacky, surtout dès qu’il y avait des dépendances. Comme je ne pouvais pas utiliser Pydantic 2.x, j’ai dû créer une classe wrapper de contournement, et alors que j’essayais de mettre toute la logique dans des fichiers Python, certaines fonctionnalités manquantes m’ont obligé à en mettre une partie en JavaScript
Cela peut convenir si l’on veut ajouter une UI simple et de la logique d’UI personnalisée au-dessus de code Python, mais Streamlit ou Gradio peuvent être plus adaptés
Dépôt GitHub : https://github.com/data-catering/data-contract-playground
Site web : https://data-catering.github.io/data-contract-playground/
Il est difficile de trouver de vrais cas d’usage. Si vous voulez faire tourner un modèle de machine learning, vous pouvez le builder avec ONNX : https://onnxruntime.ai/docs/tutorials/web/
Je me demande si c’est efficace pour créer des apps basées sur le navigateur plutôt que d’utiliser JS/TS
Ce serait bien de pouvoir écrire des scripts dans Firefox pour manipuler le navigateur. L’idée serait de les évaluer à n’importe quelle étape souhaitée, par exemple au moment du GET, après tous les GET, avant ou après l’évaluation du JavaScript.
Je me demande s’il existe un outil qui permette cela, tout en donnant aussi accès à toutes les fonctionnalités de Python depuis l’hôte.
Ce n’est pas le même concept que Brython ? BRowser pYTHON : https://brython.info/
https://github.com/brython-dev/brython
https://yasoob.me/2019/05/22/running-python-in-the-browser/
Pour faire un peu d’autopromo, j’ai créé avec PyScript un framework frontend réactif plus opinionated. Il est légèrement inspiré de Vue.js : https://puepy.dev
J’avais autrefois créé un moteur de rendu Markdown avec ça. Le code source, très simple, est visible ici : https://pyscript.com/@stuartmaxwell/markdown-previewer-v2/la...
L’app ne fonctionnera probablement pas très bien sur mobile, mais elle devrait être correcte sur desktop. J’ai utilisé ce code dans une application de blog que j’écrivais avec Django.
Avec n’importe quelle configuration WASM, la grosse contrainte qui finit par être très agaçante, c’est qu’à cause de CORS, on ne peut pas appeler beaucoup d’API ni scraper des sites.
Bien sûr, CORS est important pour empêcher des choses comme le XSS, mais ce serait bien qu’il existe une autre solution que de mettre en place un proxy qui supprime CORS. Dans ce cas, on se retrouve avec une IP qui n’est pas résidentielle et a donc plus de chances d’être bloquée.