3 puntos por GN⁺ 2024-08-17 | 1 comentarios | Compartir por WhatsApp
  • PyScript es una plataforma open source que permite ejecutar código Python en el navegador, convirtiendo la propia página web en un entorno de ejecución de Python
  • Combina la universalidad de la web con el ecosistema de Python, y destaca que se puede ejecutar Python donde haya un navegador
  • Como las apps funcionan en el navegador sin instalaciones complejas, permite crear apps basadas en la web con la sintaxis fácil de aprender de Python
  • El código se ejecuta en el navegador del usuario, lo que reduce la carga de infraestructura costosa, y los resultados se pueden compartir mediante una URL de la web
  • Está dirigido tanto a principiantes como a usuarios avanzados, y toma como características clave la facilidad, expresividad, escalabilidad, capacidad de compartir, universalidad, seguridad y potencia

Entorno de ejecución de Python dentro del navegador

  • PyScript es una plataforma open source para ejecutar Python en el navegador
  • Un ejemplo de uso es ejecutar código Python dentro de HTML usando script type="py"
    • El código de ejemplo ejecuta print('You can!') dentro del documento del navegador
  • La dirección central de PyScript es combinar dos ecosistemas tecnológicos: la web y Python
    • La web es una plataforma de cómputo universal a nivel mundial
    • Python es uno de los lenguajes de programación más populares del mundo
  • Como resultado, pone al frente el mensaje de que se puede ejecutar Python donde haya un navegador

Cómo empezar y características de la plataforma

  • Se puede probar gratis y fácilmente en PyScript.com
  • La documentación está dirigida tanto a principiantes como a usuarios avanzados
  • En los recursos de la comunidad se puede ver qué se puede crear con PyScript
  • Es posible conectarse con otros usuarios de PyScript a través de Discord
  • Las características que destaca PyScript son las siguientes
    • Easy: las apps se ejecutan en el navegador sin instalaciones complejas
    • Expressive: permite crear apps con un lenguaje tan potente, popular y fácil de aprender como Python
    • Scalable: el código se ejecuta en el navegador del usuario, por lo que no se necesita infraestructura costosa
    • Shareable: las aplicaciones se pueden compartir mediante una URL de la web
    • Universal: el código se ejecuta donde sea que se ejecute un navegador
    • Secure: funciona sobre una plataforma de cómputo probada como el navegador
    • Powerful: aprovecha en conjunto las ventajas de la web y Python

1 comentarios

 
GN⁺ 2024-08-17
Comentarios en Hacker News
  • Si te da curiosidad ver un caso de uso, aquí puedes ver un dashboard de Panel con estadísticas de crimen de Dallas: https://crimede-coder.com/graphs/Dallas_Dashboard
    Tarda como 1 minuto en arrancar, incluyendo la instalación de varias librerías de Python y la carga de un dataset externo de 5 MB. Una vez que aparece, responde bastante bien y también funciona bien en iPhone
    Muchas organizaciones con las que trabajo usan la versión gratuita de Tableau y actualizan los datos manualmente, porque la versión gratuita no permite conectarse directamente al almacén de datos. Esta es una alternativa gratuita, y está configurada para crear archivos CSV comprimidos con GitHub Actions e importarlos al entorno

    • El uso de memoria se ve bastante alto. Según el administrador de tareas del navegador, esta pestaña está usando 657 MB, mientras que la mayoría de las otras pestañas andan entre 25 y 70 MB
    • Dijiste que “tarda como 1 minuto en arrancar”, pero al abrirlo en un iPad Pro de 13 pulgadas de otoño de 2023, usando banda ancha del área de NYC y WiFi, pasaron unos 8 segundos desde que hice clic en el enlace hasta que desapareció el spinner y se activaron los filtros
      Pensé que tardaría mucho más de 8 segundos en levantar lo necesario de Python para correr una app de Panel dentro de Safari en iPad. Un recargado forzado tardó unos 6 segundos
    • Me pregunto cuál habrá sido el cuello de botella. En una red de banda ancha nacional tardó unos 20 segundos
    • Está bastante bueno. Para quien le interesen los dashboards de estadísticas de crimen, también dejo el de NYPD: https://compstat.nypdonline.org/
    • El sitio está bueno. Si “muchas organizaciones usan la versión gratuita de Tableau y actualizan los datos manualmente”, me pregunto por qué no usan algo como React o Angular
      También me pregunto si el problema es que necesitan Python para el análisis de datos y no quieren ejecutarlo del lado del servidor por el costo del hosting
  • Me confundió incluso viendo la página principal, y después de leer la documentación sigo sin tener claro qué es exactamente esto
    Lo probé un poco por mi cuenta y pude hacer que mostrara “Hello World” dentro de un sitio web. Parece una especie de script que busca etiquetas con type="py" y transpila de Python a JavaScript a través de Pyodide
    Pero la demo de la página principal es un REPL y el título dice “plataforma”, así que sigo confundido

    • Más que “transpilar Python a JavaScript”, PyScript parece estar orientado a ejecutar código Python directamente. Usa un intérprete de Python compilado a WebAssembly, ya sea CPython de Pyodide o MicroPython
    • No me gusta que usen términos vagos y mal definidos como “plataforma”. Bastaría con decir que es un framework que evalúa código dentro de etiquetas de script para Python usando Pyodide
    • No he leído realmente la documentación ni el código fuente, pero me imagino que el paquete js se mapea al objeto window real y que debe ser una API para llamar métodos del DOM mediante algún objeto Proxy
    • La información sobre la terminal la encontré aquí: https://docs.pyscript.net/2024.8.2/user-guide/terminal/
      Esperaba poder ejecutar Python desde la consola del navegador
  • ¿En qué se diferencia esto de Pyodide? https://pyodide.org/en/stable/

    • Pyodide es un port de CPython a la plataforma WebAssembly. PyScript es un framework que usa Pyodide para permitir desarrollar aplicaciones Python en el navegador. Como elevator pitch, sería algo así como “Python dentro de etiquetas de script mediante Pyodide”
    • Esto usa Pyodide. Aunque en realidad no sea un transpiler, se siente más cercano a un transpilador de Python hacia JS, y está pensado para crear apps de navegador con Python. Así que podría verse como Pyodide + APIs del navegador
    • Pyodide es el runtime
      PyScript puede usar Pyodide o MicroPython, y MicroPython en realidad es bastante pequeño. Encima del runtime, PyScript va más allá de simplemente ejecutar código Python y ofrece comodidades y mejoras de calidad de vida para usar Python de verdad en programación web
    • Es un wrapper
  • Hace poco me metí a fondo en usar PyScript para ejecutar apps CLI de Python en el navegador
    Se sintió hacky todo el tiempo, y más todavía cuando entraban dependencias. No pude usar Pydantic 2.x, así que tuve que crear clases wrapper como solución temporal, y aunque quería poner toda la lógica en archivos Python, había funciones faltantes y tuve que dejar parte en JavaScript
    Puede estar bien si quieres poner una UI simple y lógica de UI personalizada encima de código Python, pero quizá Streamlit o Gradio encajen mejor
    Repositorio en GitHub: https://github.com/data-catering/data-contract-playground
    Sitio web: https://data-catering.github.io/data-contract-playground/

    • A medida que muchos proyectos de Python se rustifican, se está volviendo innecesariamente difícil usar Python en cualquier parte
  • Cuesta encontrar casos de uso reales. Si quieres correr un modelo de machine learning, puedes compilarlo con ONNX: https://onnxruntime.ai/docs/tutorials/web/
    Me pregunto si esto será eficiente para construir apps basadas en navegador en lugar de usar JS/TS

    • Puede que algunas personas no quieran tocar JS/TS
    • Los lenguajes de programación deberían estar separados del entorno de despliegue
  • Estaría bien poder escribir scripts en Firefox para manipular el navegador; algo como ejecutar evaluaciones en la etapa que uno quiera, como en el momento del GET, después de todos los GET, antes o después de evaluar JavaScript.
    Me pregunto si existe alguna herramienta accesible desde el host que permita hacer esto y además usar todas las capacidades de Python.

  • ¿No es esto el mismo concepto que Brython? BRowser pYTHON: https://brython.info/
    https://github.com/brython-dev/brython

  • Para presumir un poco, hice un framework frontend reactivo y más opinionado usando PyScript. Está inspirado un poco en Vue.js: https://puepy.dev

  • Hace un tiempo hice con esto un renderizador de Markdown. Aquí se puede ver un código fuente muy simple: https://pyscript.com/@stuartmaxwell/markdown-previewer-v2/la...
    La app probablemente no funcione muy bien en móvil, pero en escritorio debería ir bien. Usé este código en una aplicación de blog que estaba escribiendo con Django.

  • En cualquier configuración con WASM, termina siendo muy molesta la gran limitación de que no se pueden llamar muchas APIs ni hacer scraping de sitios por culpa de CORS.
    Claro que CORS es importante para evitar cosas como XSS, pero ojalá hubiera otra forma además de montar un proxy que quite CORS. Hacer eso te deja con IPs que tienen más probabilidades de ser bloqueadas que una IP residencial.

    • ¿Este problema solo aplica cuando el aislamiento de origen cruzado está habilitado con COOP y COEP?