Script Python (motore Pyodide)
Scegliere Python per uno script lo fa girare in un motore integrato, con le stesse regole di sandbox del JavaScript. Il motore si scarica una volta sola, con un clic, e poi gira interamente offline.
Senzoukria · Documentazione · Aggiornato a settembre 2026
Dove trovarlo
- Dove
- Pagina Scripting → Linguaggio → Python, poi la fascia «Motore Python»
- Download
- Sei file, circa 16,4 MB in totale, scaricati una volta sola
- Incluso
- numpy, nella wheel corrispondente all'ABI del motore
- Budget di avvio
- 120 s per l'avvio; il download ha il suo budget di 600 s
- Budget di script
- 2 s per esecuzione, come in JavaScript
Che cosa fa
Il linguaggio si sceglie per script e viene salvato insieme a esso. I due linguaggi ricevono gli stessi dati e restituiscono le stesse forme, così uno script portato dall'uno all'altro ritrova i suoi riferimenti: le colonne delle barre sono esposte con i loro nomi, gli helper di calcolo mantengono gli stessi nomi e i costruttori di output corrispondono uno a uno.
L'avvio del motore è uno stato di prima classe, mostrato su una fascia propria, e non si confonde mai con l'esecuzione di uno script. Questa distinzione conta: il motore impiega alcuni secondi ad avviarsi mentre un'esecuzione di script ha un budget di due secondi, quindi fondere i due farebbe sembrare un ciclo infinito ogni script Python corretto.
Nulla si scarica da solo. Installare è un clic; l'avvio automatico avviene solo quando i file sono già presenti.
Stati del motore
| Stato | Predefinito | Che cosa cambia |
|---|---|---|
| Non installato | iniziale | Propone «Installa il motore Python» e indica la dimensione del download una tantum. |
| Download in corso | — | Mostra una percentuale e propone «Annulla il download». |
| Avvio in corso | — | Il motore si sta avviando; gli script attendono invece di fallire. |
| Motore pronto | — | Mostra la versione e i millisecondi impiegati per l'avvio, e propone «Rimuovi il motore». |
| Motore non disponibile | — | Indica che il motore non è partito, con il messaggio grezzo, e propone «Riprova». Gli script JavaScript non sono interessati. |
| Nota offline | sempre | Una volta installato, il motore gira interamente offline: nessuno script e nessun dato viene inviato da nessuna parte. |
Linguaggio incoerente
Incollare uno script Python in una bozza ancora impostata su JavaScript produceva un errore di sintassi su una riga arbitraria, più consigli su console.log a chi stava scrivendo Python. Ora la pagina verifica se il codice contraddice il linguaggio dichiarato e lo dice, con un pulsante che passa a quello rilevato.
Il controllo è volutamente stretto: cerca solo i segni che sono veri errori di sintassi nell'altro linguaggio, e tace quando un file porta i segni di entrambi — su uno script tradotto a metà non c'è nulla di utile da dire. Mancare un rilevamento ti riporta soltanto al vecchio messaggio oscuro; inventarne uno ti manderebbe a cambiare un linguaggio che era corretto.
Limiti e trappole
- Cambiare linguaggio non traduce il tuo codice: resta esattamente com'è scritto e non girerà finché non lo riscrivi.
- I file del motore vengono scaricati dal relay del prodotto, l'unica origine remota consentita dalla politica di contenuto dell'applicazione.
- La versione del motore è fissata e verificata rispetto al binario compilato; mescolare versioni viene rifiutato invece di produrre crash illeggibili.
- Il backtest di una strategia Python esegue il ciclo dal lato Python invece di attraversare il confine tra linguaggi a ogni barra, e un test di parità confronta le sue operazioni con quelle del ciclo JavaScript barra per barra. print() finisce nel log, preceduto dalla barra corrente.
Pagine correlate
- Panoramica della pagina Scripting
- Scripting: scrivere una strategia
- Galleria dei modelli di script
- Backtest
Questa pagina in altre lingue
Domande frequenti
- Mi serve Python installato sul computer?
- No. Il motore è integrato e viene scaricato una volta dall'applicazione. Non usa e non richiede un'installazione Python di sistema.
- Quali librerie sono disponibili?
- La libreria standard più numpy, distribuita nella wheel corrispondente all'ABI del motore. Dentro la sandbox non c'è accesso alla rete, quindi non si possono scaricare pacchetti durante l'esecuzione.
- Perché il mio script Python fallisce con un errore di sintassi su una riga che non esiste?
- È la firma di un linguaggio incoerente: al tuo sorgente è stato aggiunto un wrapper nell'altro linguaggio. Cambia il linguaggio dello script ed esegui di nuovo.