3 points par GN⁺ 2024-08-17 | 1 commentaires | Partager sur WhatsApp
  • 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
  • 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

 
GN⁺ 2024-08-17
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

    • La consommation mémoire semble assez élevée. D’après le gestionnaire des tâches du navigateur, cet onglet utilise 657 Mo, alors que la plupart des autres onglets sont plutôt autour de 25 à 70 Mo
    • Il était écrit que « le démarrage prend environ 1 minute », mais en l’ouvrant sur un iPad Pro 13 pouces de l’automne 2023, via un réseau haut débit de la région de NYC et en WiFi, il a fallu environ 8 secondes entre le clic sur le lien et la disparition du spinner avec activation des filtres
      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 quel était le goulot d’étranglement. Sur un réseau haut débit national, cela a pris environ 20 secondes
    • Plutôt sympa. Pour ceux que les dashboards de statistiques criminelles intéressent, voici aussi celui du NYPD : https://compstat.nypdonline.org/
    • Le site est chouette. Si « beaucoup d’entreprises utilisent la version gratuite de Tableau et mettent les données à jour manuellement », je me demande pourquoi elles n’utilisent pas quelque chose comme React ou Angular
      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 Pyodide
    Mais la démo de la page d’accueil est un REPL et le titre parle de « plateforme », donc je reste perplexe

    • Plutôt que de « transpiler Python vers JavaScript », PyScript semble plutôt exécuter directement du code Python. Il utilise un interpréteur Python compilé en WebAssembly, avec CPython de Pyodide ou MicroPython
    • Je n’aime pas l’usage de termes vagues et mal définis comme « plateforme ». Il suffirait de dire que c’est un framework qui évalue le code placé dans des balises script pour Python avec Pyodide
    • Je n’ai pas réellement lu la documentation ni le code source, mais j’imagine que le package js est mappé sur le véritable objet window et fournit une API qui appelle les méthodes du DOM via une sorte d’objet Proxy
    • J’ai trouvé les informations sur le terminal ici : https://docs.pyscript.net/2024.8.2/user-guide/terminal/
      J’espérais pouvoir exécuter Python dans la console du navigateur
  • En quoi est-ce différent de Pyodide ? https://pyodide.org/en/stable/

    • Pyodide est un portage de CPython vers la plateforme WebAssembly. PyScript est un framework qui utilise Pyodide pour permettre de développer des applications Python dans le navigateur. En elevator pitch, ce serait quelque chose comme « du Python dans des balises script via Pyodide »
    • Ceci utilise Pyodide. Même si ce n’est pas vraiment un transpileur, cela donne davantage l’impression d’un transpileur de Python vers JS, et sert à créer des apps navigateur en Python. On peut donc le voir comme Pyodide + les API du navigateur
    • Pyodide est un runtime
      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
    • C’est un wrapper
  • 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/

    • Avec la rustification de nombreux projets Python, utiliser Python partout devient plus difficile que nécessaire
  • 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

    • Certaines personnes peuvent ne pas vouloir toucher à JS/TS
    • Les langages de programmation devraient être découplés de l’environnement de déploiement
  • 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

  • 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.

    • Ce problème ne se pose-t-il que lorsque l’isolation cross-origin est activée avec COOP et COEP ?