Esempio di codice e struttura di un progetto PyScript

Python nel browser: esplorando le potenzialità di PyScript

PyScript è una piattaforma open source progettata per portare Python all’interno dei moderni browser web, con l’intento di coniugare la familiarità e l’accessibilità della piattaforma web con l’espressività e la profondità di uno dei linguaggi di programmazione più popolari al mondo. L’obiettivo è permettere agli sviluppatori di creare applicazioni web ricche utilizzando l’ampio ecosistema di librerie Python, senza rinunciare alle funzionalità native del browser.

Interpreti e interazione con il DOM

Per funzionare, PyScript si appoggia a due interpreti Python compilati in WebAssembly (WASM), che l’utente può scegliere in base alle proprie esigenze: Pyodide e MicroPython. Il primo è una versione dell’interprete standard CPython, completa e robusta. Include le librerie più diffuse e molti pacchetti fondamentali come NumPy, Pandas, SciPy e Matplotlib, rendendola la scelta ideale per applicazioni complesse o legate alla data science. Il secondo, invece, è una versione più snella ed efficiente, ottimizzata per girare in ambienti con risorse limitate ed è particolarmente indicata per l’uso su browser di dispositivi mobili o tablet. Il sistema interagisce con il Document Object Model (DOM) del browser in due modi principali: tramite la Foreign Function Interface (FFI), che crea oggetti proxy in Python legati direttamente a quelli JavaScript, e attraverso il modulo pyscript.web. Quest’ultimo è un’API “Pythonica”, presente solo nelle versioni di PyScript più recenti, che introduce l’oggetto globale page per rappresentare la pagina web corrente: è quindi possibile selezionare gli elementi HTML usando la sintassi a parentesi quadre page["#id"] o i selettori CSS classici tramite .find(). Gli elementi restituiti espongono proprietà più intuitive come style, classes, e metodi come .append().

				
					from pyscript import when
from pyscript.web import page

input_data = page["#input-user"]
button = page["#my-button"]
output_box = page["#result"]
				
			

Struttura di un progetto PyScript

Un progetto PyScript si basa essenzialmente su tre componenti: 

1. Un file index.html che definisce la struttura della pagina e richiama il modulo PyScript:

				
					<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
    <link
      rel="stylesheet"
      href="https://pyscript.net/releases/2026.7.1/core.css"
    />
    <script
      type="module"
      src="https://pyscript.net/releases/2026.7.1/core.js"
    ></script>
  </head>
  <body>
    <!-- python code... -->
    <script type="py" src="./main.py" config="./pyscript.json"></script>
  </body>
</html>
				
			

2. Un file di configurazione (pyscript.json o pyscript.toml) per descrivere l’ambiente e i pacchetti necessari (qui per fare un esempio è stato inserito il modulo three.js):

				
					name = "Threejs esample with PyScript"
description = "An example on how to use Three.js and WebGL in PyScript."

[js_modules.main]
"https://cdn.jsdelivr.net/npm/three@0.181.2/build/three.module.js" = "three"
				
			
				
					{
  "name": "Threejs example with PyScript",
  "description": "An example on how to use Three.js and WebGL in PyScript.",
  "js_modules": {
    "main": {
      "https://esm.sh/three@0.181.2": "THREE"
    }
  }
}
				
			

3. Un file main.py con il codice Python principale dell’applicazione:

				
					from pyscript import when, window, document
from pyscript.js_modules import THREE
import numpy
				
			

Ambiti di applicazione

Le potenzialità di PyScript spaziano in diversi ambiti quali l’analisi e la visualizzazione dati, grazie all’integrazione di librerie come Pandas e Matplotlib che lo rendono molto efficace per la creazione di dashboard e grafici complessi direttamente sul web; lo sviluppo di semplici applicazioni web o scene di grafica 3D, sfruttando librerie come Threejs (sebbene con alcune limitazioni); e non da ultimo la didattica, essendo Python un linguaggio facile da insegnare e imparare.

Vantaggi e limiti attuali

Questa soluzione sembra quindi offrire numerosi vantaggi, a partire dalla facilità d’uso: non richiede configurazioni infrastrutturali complesse e permette l’esecuzione del codice direttamente nel browser dell’utente. Inoltre è una soluzione universale e sicura, applicabile ovunque sia presente un browser moderno sfruttando la sua sandbox di sicurezza. Infine, consente ai programmatori Python di sfruttare le proprie competenze e l’ampio ecosistema di librerie disponibili, estendendo le possibilità del linguaggio anche nel contesto web. Tuttavia, essendo un progetto ancora nelle sue fasi iniziali, PyScript presenta sfide non trascurabili, molte funzionalità sono ancora un work in progress rendendo lo sviluppo di applicazioni complesse difficoltoso. La mancanza di framework UI è un grande punto a sfavore, infatti al momento non esiste un vero equivalente Python di framework JavaScript moderni (come React o Vue) per la gestione di interfacce utente più elaborate. Un altro svantaggio che abbiamo potuto sperimentare è l’incompatibilità con ES Modules che impedisce l’uso corretto di componenti esterni fondamentali, come i loader per modelli 3D (GLTF) o texture in Three.js.

Conclusione

L’opinione diffusa è che PyScript non sia ancora pensato per sostituire i framework JavaScript tradizionali nello sviluppo di grandi applicazioni, ma rappresenta una soluzione sempre più interessante per dashboard, strumenti scientifici, prototipi e applicazioni dove Python costituisce già il linguaggio principale. Il progetto gode del sostegno di realtà importanti come Anaconda, e le differenze qualitative tra una versione e l’altra sono evidenti. Inoltre, la comunità è molto attiva su piattaforme come Discord e GitHub, segno di un interesse crescente e di uno sviluppo vivace. Per chi desidera sperimentare questa tecnologia, la piattaforma pyscript.com offre un ambiente semplice e immediato per sviluppare e ospitare applicazioni web. In prospettiva, PyScript rappresenta una promettente evoluzione per l’integrazione di Python nel web e, se lo sviluppo continuerà con questo ritmo, potrebbe rivoluzionare il futuro dell’interoperabilità web.

Ultimi articoli

industrializzare l’AI nel medical imaging

Oltre l’algoritmo: come industrializzare l’AI nel medical imaging

HL7 integration

HL7 Integration nei software medicali 

FHIR Integration per piattaforme healthcare

FHIR Integration per piattaforme healthcare 

area contatti

Per informazioni, progetti, idee, scrivici