Erstellen Sie Python EXE ohne MSVCP90.dll

8

Ich versuche mit Py2Exe ein Python-Programm (mit wxPython) zu einer Windows-Exe zu machen, aber es gibt einen Fehler bezüglich MSVCP90.dll. Nach dem Lesen von py2exe kann auf StackOverflow keine ausführbare Datei generiert werden , heißt es "Ich muss" Laden Sie diese Datei herunter. Es besagt jedoch auch, dass alle Zielbenutzer diese Datei herunterladen müssen. Dies wird eine große Unannehmlichkeit für meine Benutzer sein (hauptsächlich Firmenkunden, die nicht wissen, wie man die Datei herunterlädt), also gibt es eine Möglichkeit, das mit dem Programm zu verpacken?

Danke!

    
Mark Piecis 08.04.2012, 06:03
quelle

2 Antworten

10

Was ist MSVCP90.dll

MSVCP90.dll ist Multithread, dynamische Visual Studio 2008 C-Laufzeitbibliothek. Im Allgemeinen sollte Ihre Anwendung MSVCP90.dll packen, sofern Sie nicht sicher sind, dass der Zielcomputer über die entsprechende CRT verfügt. Sie können eine der Packaging-Software verwenden, um die erforderlichen DLLs und Ihre Software zu packen und zu verteilen.

Zweck von MSVCP90.dll

Sie wundern sich vielleicht, warum Sie diese seltsame DLL brauchen? Nun, CRT ist für Python nichts Neues. Alle Anwendungen, die auf C basieren, hängen stark von C-Bibliotheksfunktionen ab. Alle Implementierungen der Standardfunktionen der C-Bibliothek wie (malloc, strcpy ..), um nur einige zu nennen, sind in diesen Bibliotheken implementiert. Es gibt verschiedene Arten und die spezifische MSDN-Website enthält weitere Details dazu .

Verteilen von MSVCP90.dll

Beim Verteilen von CRT sollten Sie verstehen, dass abhängig von der CRT, die Sie verwendet haben, die Versionsnummer variiert, die mit dem Namen der CRT versehen ist. Beispiel: MSVCP90.DLL ist der CRT von Visual Studio 2008. Ein einzelner Computer kann mehrere CRTs entweder im Systemordner des Anwendungsinstallationspfads enthalten.

Wenn Sie Ihre Anwendung packen möchten, müssen Sie erneut überprüfen, welche CRT-Version Ihre Anwendung verwendet. Das Verpacken einer falschen CRT oder die Verwendung einer solchen kann einen unerwünschten undefinierten Effekt verursachen. Im Allgemeinen sollte die CRT, die Ihre Python-Installation verwendet, dieselbe CRT sein, die Sie packen sollten.

Ermitteln des korrekten MSVCRT

Da es verschiedene CRT-Builds mit verschiedenen Versionen gibt, ist es schwierig festzustellen, welche CRT-Datei gepackt werden sollte. Wenn Sie über eine ausführbare Anwendung verfügen, können Sie dependencywalker die richtige Version ermitteln. Klicken Sie mit der rechten Maustaste auf eine der DLLs und klicken Sie auf Eigenschaften und es wird Ihnen der Ort angezeigt, von dem diese DLL ausgewählt wird.

Verpacken Sie Ihre Anwendung.

Sie können versuchen, PyInstaller zu verwenden, um Ihre Anwendung zu packen. Es wäre ein bequemer Weg, die DLL in den Zielrechner zu bekommen.

    
Abhijit 08.04.2012, 06:24
quelle
0

Sie müssen Ihre App mit dieser DLL im selben Ordner wie Ihre EXE-Datei bereitstellen.

    
jhruby 08.04.2012 06:16
quelle

Tags und Links