Domanda

confesserò Sono molto nuovo a Python e io non so davvero cosa sto facendo ancora. Recentemente ho creato una piccola applicazione Windows utilizzando Python 2.6.2 e wxPython 2.8. E funziona benissimo; Sono abbastanza soddisfatto di come funziona normalmente. Con normalmente io intendo quando invoco direttamente tramite l'interprete Python, in questo modo:

> python myapp.py

Tuttavia, ho voluto fare un passo ulteriore ed effettivamente compilare questo in un file eseguibile standalone. Così ho seguito queste istruzioni dal wiki wxPython che utilizzano py2exe. In un primo momento mi ha dato errori nella riga di comando, dicendo Msvcr90.dll mancava. Poi ho copiato Msvcr90.dll alla mia cartella Python \ DLL. Che sembrava in un primo momento come se fosse stato risolto, dal momento che ha fatto con successo quello che doveva fare. Lo ha fatto finire con un avvertimento rapido che c'erano file DLL qualche programma dipende e può o non può avere bisogno di distribuirli.

Così ho navigato nella cartella dist che py2exe aveva creato e provato a fare funzionare il mio eseguibile. Ma cercando di aprirlo spuntato solo fino una finestra di errore che diceva:

This application failed to start because MSVCR90.dll was not found.
Re-installing the application may fix this problem.

Così sono andato avanti e copiato di nuovo Msvcr90.dll in questa cartella dist. Ma che non ha fatto il trucco. Poi ho copiato nella directory Windows \ System32. Che non ha fatto neanche. Che cosa devo fare per ottenere questa cosa per funzionare?

È stato utile?

Soluzione

Non si può semplicemente copiare msvcr * .dll - hanno bisogno di essere impostato utilizzando le regole per assembly side-by-side. È possibile farlo installando il pacchetto ridistribuibile come sottolinea Sam, oppure è possibile mettere al fianco dei tuoi eseguibili finchè si rispettano le regole.

Si veda la sezione "Distribuzione di Visual C ++ DLL biblioteca come assembly privati" qui: Come distribuire tramite XCopy per i dettagli, ma fondamentalmente l'applicazione si presenta così:

c:\My App\MyApp.exe
c:\My App\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest
c:\My App\Microsoft.VC90.CRT\msvcr90.dll

Un vantaggio di questo è che gli utenti non amministratori possono utilizzare la vostra applicazione (credo che è necessario essere un amministratore per installare il runtime tramite il programma di installazione ridistribuibile). E non c'è bisogno di alcuna installazione -. Si può solo copiare i file su un PC e funziona il tutto

Altri suggerimenti

Credo che l'installazione di Microsoft C ++ Redistributable Package installerà la DLL è necessario correttamente.

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