- 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
- El código de ejemplo ejecuta
- 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
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
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
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 PyodidePero la demo de la página principal es un REPL y el título dice “plataforma”, así que sigo confundido
jsse mapea al objetowindowreal y que debe ser una API para llamar métodos del DOM mediante algún objeto ProxyEsperaba poder ejecutar Python desde la consola del navegador
¿En qué se diferencia esto de Pyodide? https://pyodide.org/en/stable/
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
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/
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
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
https://yasoob.me/2019/05/22/running-python-in-the-browser/
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.