Forum >> Programmazione Python >> Scripting >> il modulo Shelve non funziona correttamente dopo aver compilato il programma con pyinstaller

Pagina: 1

Salve amici, ho realizzato un programmino che memorizza dei valori in un file shelve utilizzando la funzione writeback=True per memorizzare all'istante le nuove informazioni, però mi succede una cosa molto strana.. quando provo il programma da Pycharm funziona tutto benissimo aggiornandomi il database in tempo reale, quando invece compilo il programma in pyinstaller si comporta come se non avessi inserito la dicitura writeback=True e quindi non mi salva le modifiche in tempo reale, e per salvarle devo per forza chiudere il file shelve con il comando shelfFile.close() e poi riaprirlo "ma questo mi porta a creare un caos nel programma" scombussolandomi un armonia perfetta :party:



PS: utilizzo windows server 2016 come sistema operativo




shelfFile = shelve.open('db', writeback=True)


Leggendo la documentazione di shelve ho risolto lanciando il comando
ShelfFile.sync()
dopo ogni operazione di salvataggio, però non capisco ancora perché questo non viene fatto in automatico come accade prima di compilare il codice
Per sapere se è un comportamento strano di pyinstaller oppure una svista da parte tua, dovresti provare a fare uno script assolutamente minimo (tipo, non più di dieci righe) che usa shelve per leggere/scrivere qualcosa da una risorsa esterna, quindi "compilarlo" con pyinstaller, e vedere se il problema si presenta. Se sì, dovresti provare a sottoporre il baco agli sviluppatori https://github.com/pyinstaller/pyinstaller/wiki/How-to-Report-Bugs
grazie per il suggerimento, domani farò così


Pagina: 1



Esegui il login per scrivere una risposta.