Domanda

Ho un problema: ho usato py2exe per il mio programma e ha funzionato sul mio computer. L'ho impacchettato con Inno Setup (funzionava ancora sul mio computer), ma quando l'ho inviato a un altro computer, ho ricevuto il seguente errore durante il tentativo di eseguire l'applicazione: & Quot; CreateProcess fallito; codice 14001. " L'app non funzionerà. (Nota: sto usando wxPython e il modulo multiprocessore nel mio programma.) Ho cercato su Google per un po 'e ho scoperto che l'utente dovrebbe installare qualcosa di ridistribuibile da MS, ma non voglio complicare la vita ai miei utenti. C'è una soluzione?

Versioni:

Python 2.6.2c1, py2exe 0.6.9, Windows XP Pro

È stato utile?

Soluzione

È necessario includere msvcr90.dll, Microsoft.VC90.CRT.manifest e python.exe.manifest (rinominato in [yourappname] .exe.manifest) nella directory di installazione. Questi file saranno nella directory Python26 sul tuo sistema se hai installato Python con la quot &; Solo per me & Quot; opzione.

Le istruzioni per farlo sono disponibili qui .

Non dimenticare di chiamare multiprocessing.freeze_support () anche nella tua funzione principale, oppure avrai problemi all'avvio di un nuovo processo.

Mentre altri hanno discusso includendo il runtime MSVC nel pacchetto di installazione, la soluzione sopra funziona quando si desidera distribuire un solo file .zip contenente tutti i file. Evita di dover creare un pacchetto di installazione separato quando non si desidera quella complicazione aggiuntiva.

Altri suggerimenti

Dovresti essere in grado di installare quel componente ridistribuibile di MS come parte del tuo exe di installazione di InnoSetup.

Quando esegui py2exe, osserva attentamente i messaggi finali al termine. Ti dà un elenco di DLL che dice sono necessarie al programma, ma che py2exe non raggruppa automaticamente.

Molti nell'elenco sono disponibili in modo affidabile su qualsiasi installazione di Windows, ma ce ne saranno alcuni che dovresti raggruppare manualmente nell'installazione di Inno Setup. Alcuni sono necessari solo se si desidera distribuire su installazioni Windows precedenti, ad es. Win 2000 o precedente.

È possibile spedire le DLL di runtime in questione con la propria applicazione come " private assembly " ;. Questo significa semplicemente mettere una copia di una directory con un nome speciale contenente le DLL di runtime e i loro manifest accanto all'eseguibile.

Vedi la mia risposta a questo post .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top