Un sito Web è in modalità sandbox e non è in grado di eseguire script esterni: è limitato al browser. Ma può emettere richieste HTTP a un server. Un server non è necessariamente "una macchina in un data center", ma più in generale "qualsiasi processo che ascolta su alcune porte e parla HTTP".
Poiché il codice JavaScript nella sandbox del browser e il codice Python possono comunicare solo se JS invia una richiesta HTTP a un server Web che esegue quindi il codice Python, è necessario un server. È molto facile creare un semplice server web Python, ad es. con strutture come Flask. Non condividono le variabili, ma possono trasferire i messaggi. Il messaggio include quindi tutti i dati necessari. Spesso, il codice JS invia una richiesta POST Ajax con dati con codifica JSON e il server risponde con un altro documento JSON che contiene i risultati.
Ma come può funzionare senza una connessione Internet? È possibile eseguire il server sullo stesso computer del browser. Il server quindi ascolta localhost e non vengono effettuate richieste di rete reali. Ad esempio, quando sviluppo un sito con file HTML statici, avvio spesso un server semplice con python3 -m http.server -b localhost 8080
. Posso collegarmi al server navigando a http://localhost:8080/
nel mio browser.
Invece di un file server statico, dovresti eseguire il tuo server Python su qualche porta. I tuoi utenti installerebbero quindi il tuo software Python e avvieranno il server, quindi apriranno l'indirizzo corretto nel browser per caricare la GUI.