Si tratta di un follow-up a https://stackoverflow.com/questions/37684111/ironpython-exe-file-closing-immediately-no-exception-thrownPython Threading.Timer oggetto non funziona quando viene compilato a .exe
ho capito che il mio programma non funziona, una volta compilato a causa di un problema con l'oggetto Timer nella libreria di threading. Ho incluso la libreria nella mia directory \ Lib \ site-packages e ho aggiunto la directory al percorso nel programma. Ecco il codice di prova che sto utilizzando - un semplice programma di conteggio:
import sys
from threading import Timer
sys.path.append('C:\Users\[user]\Documents\Visual Studio 2015\Projects\Testing Timer Compilation issue\Testing Timer Compilation issue')
sys.path.append('C:\Users\[user]\Documents\Visual Studio 2015\Projects\Testing Timer Compilation issue\Testing Timer Compilation issue\Lib')
class Chron():
def __init__(self):
self.t = Timer(2, self.count)
self.t.start()
self.i = 0
def count(self):
print(self.i)
self.i += 1
if self.i <= 15:
self.t = Timer(2, self.count)
self.t.start()
c = Chron()
funziona perfettamente in interprete interattivo all'interno di Visual Studio, ma una volta che uso pyc.py per compilare un file exe, non sarà eseguito e si chiude semplicemente dopo ~ 5 secondi, senza eccezioni lanciate.
Come accennato nella domanda precedente, ho un programma con un Timer in esso che ho bisogno di compilare, in quanto il codice sorgente contiene credenziali sensibili. Ci sono trucchi necessari per far funzionare il Timer all'interno di un exe? È semplicemente incompatibile?
Modifica: 6 giorni senza risposta. Sfortunatamente, non sembrano esserci risorse per questo specifico problema da nessuna parte su Internet. È quasi come se fossi l'unico ad avere questo problema. Questo mi sembra strano, dal momento che il problema sembra essere con l'oggetto Timer stesso, e non posso immaginare che nessun altro abbia provato a distribuire un'applicazione con un Timer al suo interno. Qualsiasi intuizione sarebbe utile a questo punto, poiché sono completamente perplesso.
Hai provato a lasciare le stampe nel codice per vedere dove si ferma esattamente? Potrebbe essere utile per rintracciare il problema – Nikign
Ecco come sono arrivato dove sono attualmente. Nella mia domanda precedente, che ho linkato sopra, vedrete che questa domanda è in realtà il prodotto di fare proprio questo su un pezzo di codice molto più complesso. Questo rompe il secondo in cui tenta di avviare il conteggio del timer. – Inagnikai
in modo che non entri nella funzione di avvio? Forse c'è qualcosa nella funzione start – Nikign