Creado por Anaconda y lanzado en abril de 2022, PyScript es una nueva tecnología experimental pero prometedora que hace que el tiempo de ejecución de Python esté disponible como lenguaje de secuencias de comandos en navegadores habilitados para WebAssembly.
Todos los navegadores más utilizados ahora son compatibles Asamblea webel estándar de tiempo de ejecución de alta velocidad que lenguajes como C, C++y Óxido puede compilar. La implementación de referencia de Python está escrita en C y en un proyecto anterior, pioditoproporcionó un puerto WebAssembly del tiempo de ejecución de Python.
PyScript, sin embargo, tiene como objetivo proporcionar un entorno completo en el navegador para ejecutar Python como lenguaje de programación web. Se basa en Pyodide pero agrega o mejora características como la capacidad de importar módulos de la biblioteca estándar, usar importaciones de terceros, configurar interacciones bidireccionales con el Modelo de objetos de documento (DOM) y hacer muchas otras cosas útiles en ambos. el Pitón y javascript mundos.
En este momento, PyScript sigue siendo un proyecto prototípico y experimental. Anaconda no recomienda usarlo en producción. Pero los usuarios curiosos pueden probar ejemplos en el sitio de PyScript y utilizar los componentes disponibles para crear aplicaciones experimentales de Python más JavaScript en el navegador.
En este artículo, haremos un recorrido por PyScript y veremos cómo facilita las interacciones de Python y JavaScript en sus aplicaciones web.
Programación con PyScript
En esencia, PyScript consta de una única inclusión de JavaScript que puede agregar a una página web. Esto incluye carga el tiempo de ejecución base de PyScript y agrega automáticamente soporte para etiquetas personalizadas utilizadas en PyScript.
Aquí hay un ejemplo simple de un proyecto «Hola, mundo» en PyScript:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet"
href="https://pyscript.net/releases/2023.11.2/core.css" />
<script type="module"
src="https://pyscript.net/releases/2023.11.2/core.js">
</script>
</head>
<body>
<script type="py" terminal>
from pyscript import display
display("Hello World!")
print("Hello terminal!")
</script>
</body>
</html>
El script
etiqueta en el documento head
carga la funcionalidad principal de PyScript. El .css
La hoja de estilo es opcional, pero útil. Entre otras cosas, inserta avisos al usuario en el momento de carga de la página sobre lo que está haciendo la página: cargar el tiempo de ejecución de Python, inicializar, etc.
El código Python está incluido en el script
etiqueta con un type="py"
atributo. Tenga en cuenta que el código debe formatearse según las convenciones de sangría de Python o no se ejecutará correctamente. Tenga esto en cuenta si utiliza un editor que reformatea HTML automáticamente; podría alterar el contenido del script
bloquear y hacerlo inejecutable. También puedes consultar un .py
archivo en lugar de incluir el script en línea, lo que puede ser más fácil.
Cualquier código Python se evalúa una vez que los componentes PyScript terminan de cargarse. Puede elegir si la salida se envía al DOM (use pyscript.display
), o a un terminal integrado. Si utilizas el terminal, tienes que incluir terminal
como atributo en el script
etiqueta. (Más sobre esto a continuación).
Si el script en las etiquetas escribe en stdout
(como con un print
declaración), puede dirigir dónde desea que se muestre el resultado en la página proporcionando un output
propiedad. En este ejemplo, stdout
porque el guión se dirige al div
con el DNI de "out"
.
Si guarda esto en un archivo y lo abre en un navegador web, primero verá un indicador de «cargando» y una pausa, mientras el navegador obtiene el tiempo de ejecución de PyScript y lo configura. El tiempo de ejecución debería permanecer almacenado en caché en cargas futuras, pero aún tardará un momento en activarse. Después, Hello world
debería aparecer en la página dos veces: una en la parte superior en HTML y otra en un panel negro que es el terminal integrado.
Importaciones de bibliotecas estándar
Los scripts que utilizan únicamente las funciones integradas de Python son sólo algo útiles. La biblioteca estándar de Python está disponible en PyScript de la misma manera que la usaría en Python normal: simplemente import
y ponte manos a la obra. Las importaciones de bibliotecas estándar deberían funcionar en PyScript.
Si quisieras modificar el bloque de script anterior para mostrar la hora actual, no necesitarías hacerlo de manera diferente a como lo harías en Python convencional:
import datetime
print ("Current date and time:",
datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
Usando bibliotecas de PyPI
¿Qué sucede si desea instalar un paquete de PyPI y usarlo? PyScript le permite especificar configuraciones de proyecto, incluidos los paquetes de terceros que se instalarán desde PyPI, mediante un .toml
o .json
formato de archivo en el directorio de su proyecto. Veamos cómo funciona usando .toml
.
Para utilizar el archivo de configuración del proyecto, deberá incluir el config
directiva en su script
etiqueta:
<script type="py" src="https://www.infoworld.com/article/3661628/main.py" config="pyscript.toml">
El pyscript.toml
El archivo enumera los paquetes necesarios:
packages = ["package","another-package"]
Tenga en cuenta que no todos los paquetes de PyPI se instalarán y ejecutarán como se esperaba. La mayoría de los paquetes de Python «puros», como humanize
, debería funcionar bien. Y los paquetes utilizados en los ejemplos proporcionados por Anaconda, como numpy
, pandas
, bokeh
o matplotlib
, también funcionará. Pero los paquetes que requieren acceso a la red o funcionan con elementos nativos de la plataforma, como las GUI, probablemente no funcionen.
Importando localmente
Para otro escenario común, digamos que desea importar desde otros scripts de Python en el mismo árbol de directorios que su página web. El uso de importaciones hace que sea más fácil sacar más lógica de Python de la propia página web, donde se mezcla con su presentación y puede resultar difícil trabajar con ella.
Normalmente, Python utiliza la presencia de otros .py
archivos en el sistema de archivos para indicar qué puede importar. PyScript no funciona de esta manera, por lo que deberá especificar qué archivos desea que estén disponibles como módulos importables.
Para hacer esto, enumere las URL que desea que estén disponibles para PyScript en el archivo de configuración de su aplicación en un [files]
bloque, junto con cómo desea asignarlos al sistema de archivos emulado de PyScript. Por ejemplo:
[files]
"/module.py" = "./libs/module.py"
"https://mydata.com/data.csv" = "./data.csv"
Cualquier archivo al que se pueda acceder desde la URL de la izquierda estará disponible para el sistema de archivos emulado del intérprete de Python a través de la ruta de la derecha. En este caso, el archivo que vería si buscara /module.py
(p.ej, http://localhost:8000/module.py
) está disponible para Python como libs.module
. Asimismo, el archivo en la URL https://mydata.com/data.csv
está disponible en el directorio de trabajo actual emulado como data.csv
.
La terminal en el navegador
Los usuarios de Python deben estar familiarizados con REPL, la interfaz de consola del tiempo de ejecución de Python. En PyScript, puede incrustar en el navegador una terminal en vivo que ejecute REPL, o simplemente la salida de la consola desde su programa Python.
Para incrustar una terminal, utilice un script
etiqueta que tiene terminal
como uno de sus atributos:
<script type="py" terminal>print("hello world")</script>
Esto abre una terminal e imprime hello world
, pero no permite ninguna interactividad. Para la interacción, es necesario utilizar el worker
atributo:
<script type="py" terminal worker>
name = input("What is your name? ")
print(f"Hello, {name}")
</script>
El worker
ejecuta su programa en un trabajador web, que es esencialmente un subproceso. Tenga en cuenta que no puede utilizar trabajadores web en un archivo HTML cargado localmente; debes cargarlo desde un servidor web que proporcione ciertos encabezados. documentación de PyScript explica cómo funciona esto en detalle.
La mayor parte de lo que es posible en una consola normal, como colorear y Unicode, también debería ser compatible con la terminal PyScript.
Interactuando con el DOM y JavaScript
Debido a que PyScript se basa en la tecnología del navegador, tiene Mecanismos para interactuar con el DOM.. Por ejemplo, si quisieras obtener el valor de un cuadro de entrada en una página web y usarlo en tu código Python, harías esto:
from pyscript import window, document
inputbox = document.querySelector("#my-input")
print("Value of input:", inputbox.value)
PyScript también incluye un módulo llamado pydom
que permite la creación dinámica de objetos en la página:
from pyweb import pydom
new_div = pydom.create("div")
new_div.content = "Hello World"
Esto crea una nueva div
elemento en la página y lo rellena con texto. La mayoría de los otros tipos de manipulaciones que puede realizar con el DOM en JavaScript, como agregar elementos y cambiar atributos, se pueden realizar a través del pydom
biblioteca.
Copyright © 2024 IDG Communications, Inc.