2009-12-24 15 views
5

Un semplice script python deve essere eseguito su un server Windows senza python installato.Windows Server non può eseguire un'app generata da py2exe

Ho usato py2exe, che ha generato una sottodirectory dist sana, con script.exe che gira bene sul computer locale.
Tuttavia, quando lo eseguo sul server (Windows Server 2003 R2), questo produce:
Il sistema non può eseguire il programma specificato.

e ERRORLEVEL è 9020.

Tutte le idee?

+0

Si potrebbe anche provare questa domanda ServerFault.com. – DOK

+0

Stai provando a eseguire binari a 32 bit su un sistema operativo a 64 bit (o viceversa)? –

+0

Entrambe le macchine sono a 32 bit. –

risposta

1

Non ho trovato la causa del problema, ma l'utilizzo di python 2.5 con py2exe sullo stesso script ha funzionato bene sul server.

Suppongo che ci sia qualcosa di sbagliato con py2exe in 2.6.

+1

Py2exe funziona bene su Python2.6, l'ho usato molte volte. È necessario prestare attenzione a quale versione della DLL di runtime visuale di Microsoft C è inclusa nell'applicazione distribuita. I dettagli sono spiegati nel passaggio 5 dell'esercitazione py2exe: http://www.py2exe.org/index.cgi/Tutorial#Step5 –

2

Potrebbe mancare alcune DLL necessarie. Prova a utilizzare depends.exe per identificare ciò che potrebbe mancare. È probabilmente un msvc-something-something.dll

+0

Questa era la mia ipotesi iniziale, ma sfortunatamente tutte le DLL sono a posto. –

1

Poiché Python 2.6 è stato creato su Visual Studio 2008, la macchina di destinazione deve disporre anche delle librerie di Visual Studio 2008, disponibili da Visual C++ 2008 Redistributable package.

Ho confermato che su una versione pulita di Windows XP o Server 2003 (nessuno dei quali ha ridistribuibile Visual Studio 2008), un eseguibile py2exe Python 2.6 non riuscirà con l'errore summenzionato, ma dopo aver installato il pacchetto ridistribuibile, l'eseguibile funziona normalmente.

+0

Ehi. Sono abbastanza sicuro che il pacchetto ridistribuibile * di Visual C++ 2008 * SP1 * a cui è collegato sia la versione errata. SP1 ha la DLL di runtime di versione C errata e non funzionerà. Vedere la mia risposta qui sotto per la versione giusta. –

+0

Interessante. Pensavo di averlo provato con il ridistribuibile SP1, ma a quanto pare mi sbagliavo. Grazie per la correzione. –

6

Affinché py2exe funzioni, è necessario includere la versione corretta della DLL di runtime Microsoft C con l'applicazione.

Per python2.6, questo è Msvcr90.dll versione 9.0.21022.8, che può essere ottenuto dal Microsoft Visual C++ 2008 Redistributable Package:

http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en

NOTA che lo SP1 di questo programma di installazione contiene un versione diversa della DLL e non funzionerà.

ho trascorso un po 'all'inizio di quest'anno spiegando attentamente nel tutorial py2exe, quindi mi limiterò a collegamento a tale: http://www.py2exe.org/index.cgi/Tutorial#Step5

Problemi correlati