Come usare Script Python in HTML

Durante l’evento Pycon US del 2022, Anaconda ha presentato un nuovo progetto chiamato Pyscript, che, detto molto semplicemente, permette di integrare e richiamare da HTML script Python, esattamente come se fossero script Javascript.

Questo progetto promette all’utenza la possibilità, senza precedenti, di semplificare l’utilizzo del linguaggio python per lo sviluppo web, attraverso funzioni che permettono di  eseguire codice python direttamente nel browser, senza che sia necessario avere installato sul pc l’ambiente python.

Una novità incredibile per gli amanti di questo linguaggio di programmazione che, fino a ieri, necessitavano di una serie di complessi e macchinosi passaggi per permettere l’esecuzione di codice python all’interno di pagine web, dovendo necessariamente installare python sul server e dovendo settare l’ambiente di sviluppo nel server in modo che fosse il server ad eseguire il codice. Adesso però, tutto cambia e il codice python può essere eseguito nel browser, lato cliente.

Cos’è Python?

Python è un linguaggio di programmazione orientato ad oggetti, considerato uno dei più semplici e adatti alla didattica per via della sua sintassi molto basica e user friendly, un linguaggio di programmazione generico, o, per essere più precisi, un linguaggio di scripting, sviluppato agli inizi degli anni novanta, totalmente open source, che vanta una delle più grandi raccolte di librerie e dizionari gratuiti.

Grazie alla community e le infinite librerie che sono state sviluppate per python, questo linguaggio, in trent’anni ha raggiunto livelli altissimi, ed oggi è utilizzato in vari ambienti, dallo sviluppo scientifico alla progettazione grafica, passando per il calcolo analitico e il machine learning.

Inoltre, grazie ad alcuni framework specifici, come ad esempio Django e Flask, è possibilie realizzare e gestire siti internet e web app totalmente scritte in python. Tuttavia, come anticipato, lo sviluppo web con python, ha sempre sofferto di enormi difficoltà. Detto più semplicemente, un sito in Python può potenzialmente svolgere qualsiasi operazione ma è necessario che vi sia un infrastruttura a monte in grado di eseguire il codice python.

Per questo, negli anni, sono stati sviluppati diversi progetti che puntavano ad una maggiore integrazione di Python e HTML. Ed è stata proprio la grande popolarità di framework come Scratch e JSFiddle a spingere Anaconda a proporre un alternativa “proprietaria” ed open source a questi strumenti estremamente popolari tra gli utenti.

Il principale problema di framework come Scratch e JSFiddle, è che necessitavano di un ambiente python installato sul server di esecuzione, di conseguenza le operazioni vengono svolte su server, con un dispendio enorme di energia da parte della macchina, ed è proprio per risolvere questo problema che Anaconda ha pensato di sviluppare Pyscript.

Cos’è Pyscript?

Detto molto semplicemente Pyscript è un alternativa, progettata da Anaconda, per essere un alternativa ai sopracitati framework, e risolvere la dipendenza delle web app in python, dal server. In altri termini, Pyscript, diversamente da Scratch e JSFiddle non necessita di una componente server ed esegue il codice python direttamente nel browser, un esecuzione che è sostanzialmente lato client. Vediamo allora come funziona pyscript.

Come funziona Pyscript?

Pyscript permette di inserire script python direttamente nel codice HTML, analogamente a quanto già accade per gli script Javascript.

Per richiamare Pyscript sono necessari due passaggi. Bisogna anzitutto richiamare la libreria Pyscript, con il tag <link>, può precisamente scrivendo nel codice HTML queste due stringhe

<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>

Una volta richiamato pyscript nella nostra pagina html, sarà possibile aprire degli script.

Va precisato che il progetto è ancora agli inizi, non è quindi possibile importare integralmente un programma python in HTML, poiché le funzioni supportate sono ancora limitate.

Sostanzialmente è possibile richiamare tre funzioni <py-script><py-repl> e <py-env>.

<py-script>

esempio di utilizzo del comando py-script

Si tratta della componente di punta del progetto, quella che permette di integrare codice python in una pagina HTML.

In altri termini, una volta aperto il tag <py-script> sarà possibile inserire codice python fino al tag di chiusura </py-script> e gli output prodotti dalla funzione python possono essere collocati all’interno di comuni tag <dev>. Insomma, un funzionamento analogo a quello di un comune script Javascript, con la differenza che questi script sono in python.

<py-repl>

Questo comando permette l’inserimento di blocchi REPL (READ – EVAL – PRINT – LOOP) grazie ai quali è possibile gestire e input ed eseguire codice. Come per qualsiasi altro tag, anche il tag <py-repl> va chiuso con il tag di chiusura </py-repl>.

<py-env>

Ultimo ma non meno importante, il comando py-env permette di gestire richieste e pacchetti all’interno di un repository, e fornisce l’elenco dei pacchetti necessari, insomma, si tratta di una funzione che svolge un ruolo molto simile a quello del file requirements.txt.

Supporto package e librerie in Py-script

è importante sottolineare che al momento è già disponibile un supporto per numerosi package e librerie, tra cui Numpy, una delle principali librerie integrative per il calcolo matematico, Pandas, una delle più importanti librerie per l’analisi dei dati e Scikit-learn, una delle principali librerie per il Machine Learning.

Alcune criticità

Il progetto è sicuramente molto interessante e, nonostante sia ancora in una fase molto embrionale, le sue potenzialità sono già ampiamente visibili e facilmente individuabili, basti pensare al potenziale che hanno le infinite librerie python, importate all’interno di pagine web e web app. Tuttavia, il progetto in se non è esente da criticità, che la community non ha esitato ad evidenziare nella speranza che vengano corrette a breve.

La prima criticità è dettata dalla natura estremamente complessa del progetto che se da un lato riduce il carico di lavoro sulla macchina che hosta la pagina in cui è presente lo script, dall’altro aumenta il tempo di latenza e il tempo generale per caricare la pagina web a causa del carico di lavoro, inoltre, la necessità del browser di dover scaricare ed eseguire il codice, incide notevolmente sulla banda utilizzata.

Queste problematiche, al momento si manifestano soltanto dopo il primo caricamento, successivamente vengono “risolte” grazie all’utilizzo della cache che tiene in memoria tutte le configurazioni del caso, permettendo di risparmiare tempo e risorse durante le esecuzioni successive.

La seconda problematica è legata alle librerie, purtroppo al momento pyscript non permette di richiamare librerie private o comunque di terze parti, ma permette di richiamare soltanto poche librerie per le quali è previsto un supporto ufficiale. Questo inficia enormemente sul potenziale del progetto poiché python privato delle sue infinite librerie di terze parti, è una realtà estremamente limitata.

Al momento queste limitazioni, in particolare il freno all’utilizzo di librerie custom è determinato da ragioni di sicurezza, poiché uno script python potrebbe tranquillamente eseguire funzioni “illegite” e sottrarre dati sensibili dal pc dell’utente che si è collegato alla pagina, o peggio. Questi problemi non sono presenti in Javascript che a monte “vieta” al linguaggio di scripting di leggere e scrivere file sul pc dell’utente. Questo, per la natura stessa di Python, che non nasce come linguaggio si scripting per pagine web, ma come linguaggio di programmazione generico, non è al momento possibile.

Speriamo in ogni caso che in casa Anaconda trovino presto una soluzione che possa permettere a Py-script di liberare tutto il potenziale di Python e delle sue librerie addizionali.

COMMENTI

Share