2011-01-08 7 views
8

Ich habe ein Programm mit Python unter Windows Vista erstellt. Aber ich möchte es auf Windows XP bereitstellen. Ist es notwendig, Windows XP neu zu erstellen? Oder gibt es die Möglichkeit Build zu machen, die auf beiden Systemen funktionieren wird?Ist es möglich, exe auf Vista zu erstellen und auf XP mit py2exe

EDIT (EDIT 2 - sehr einfaches Programm funktioniert auch nicht): Mein Setup:

from distutils.core import setup 
import py2exe 

setup(console=['orderer.py']) 

Mit Abhängigkeit Explorer i geprüft, ob Abhängigkeiten sind:

msvcr90.dll 
kernel32.dll 
    +ntdll.dll 

Fast gelöst :

Ich habe herausgefunden, dass installi ng: http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en macht das Ding. Aber ich habe versucht, msvrc90.dll manuell vor und es hat nicht funktioniert, gibt es eine Möglichkeit, es automatisch zu verteilen? Oder ich muss ihm diese Installationsdatei zur Verfügung stellen.

Last und das Hauptproblem

Jetzt habe ich Problem mit msvcrt.dll. Nachricht, die auf Windows XP aufgetreten:

Der Einstiegspunkt Prozedur wcsscpy_s nicht in der dynamic Link-Bibliothek msvcrt.dll

auf Vista befinden könnte ich habe Version 7.0.6001.18000

Aber unter XP 7.0.2600.5512

Gibt es eine Möglichkeit, das zu beheben?

scheint, dass ich nicht wenige DLL ... dummen Fehler ausgeschlossen haben:

$ grep -lir msvcrt.dll . 
./buildout 
./buildtest.py 
./dist/ACTIVEDS.dll 
./dist/adsldpc.dll 
./dist/ATL.DLL 
./dist/credui.dll 
./dist/DSOUND.dll 
./dist/MAPI32.dll 
./dist/PROPSYS.dll 
./dist/WLDAP32.dll 

jetzt funktioniert es!

Antwort

3

Erstellen Sie eine Datei mit dem Namen „Microsoft.VC90.CRT.manifest“ mit folgendem Inhalt neben der ausführbaren Datei von py2exe erstellt und die msvcr90.dll, msvcp90.dll und msvcm90.dll Dateien:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <noInheritable/> 
    <assemblyIdentity 
     type="win32" 
     name="Microsoft.VC90.CRT" 
     version="9.0.21022.8" 
     processorArchitecture="x86" 
     publicKeyToken="1fc8b3b9a1e18e3b" 
    /> 
    <file name="msvcr90.dll" /> 
    <file name="msvcp90.dll" /> 
    <file name="msvcm90.dll" /> 
</assembly> 
+0

Nach dem Erstellen dieser Datei und das Hinzufügen dieser DLLs bekomme ich immer noch "Die Prozedur Einstiegspunkt wcsscpy_s konnte nicht in der dynamischen Link-Bibliothek msvcrt.dll gefunden werden" – dfens

+0

Ihr Programm sollte nicht von zwei C-Laufzeitbibliotheken abhängen. Versuchen Sie herauszufinden, woher die Abhängigkeit von msvcrt.dll stammt, z. Verwenden von DependencyWalker (http://www.dependencywalker.com/) für Ihre * .pyd- und * .dll-Dateien. – cgohlke

+0

ok ich sehe es, es ist _ctypes.pyd – dfens

2

Wenn Sie 32-Bit-Python auf Ihrem Vista-System haben und py2exe verwenden, um eine Exe zu erstellen, sollte es auch auf XP laufen.

Haben Sie Probleme? Wenn ja, was sind sie?

+0

Es gibt nur eine Nachricht: Das System kann das angegebene Programm nicht ausführen. – dfens

+0

können Sie Ihre Frage mit mehr Informationen aktualisieren? wie das Skript, mit dem du die exe kompilierst. Höchstwahrscheinlich fehlen dir einige DLLs auf dem Ziel-XP-System, die du ebenfalls einbeziehen solltest. –

Verwandte Themen