Kann ich die Architektur (32bit vs. 64bit) beim Erstellen einer pyinstaller-Programmdatei steuern?

Kurze Frage

Gibt es eine Möglichkeit zu Steuern /Garantie für die Architektur (32bit vs 64bit) beim Bau einer pyinstaller ausführbare Datei?

Hintergrund

Ich migriert von py2exe zu pyinstaller wegen der fehlenden 64bit-Unterstützung zusammen mit einer Reihe von kleinen Dinge, die ich habe eine harte Zeit der Suche vorbei. Also in diesem Sinne, ich würde lieber nicht wieder an zu gehen. Ich entwickelte zwei Anwendungen mit Python 2.7 64-bit und bin mit performance-Problemen, wenn auf Ihnen laufen, 32-bit-Maschinen.

Die erste ist eine einfache wxPython GUI (version 2.9) und stellt eine Verbindung zu einer windows-DLL-Datei für einen USB-Treiber. Dieser scheint ziemlich "sicher" zu laufen als 32 bit, weil es keine Module, die 64-bit nur. Jedoch diese Anwendung, wenn Sie unter Windows XP 32bit hat schreckliche performance-Probleme beim sprechen, um das USB-Gerät.

Die zweite Anwendung ist sehr viel größer und ich habe nicht versucht, build und run noch wegen der Angst vor der Architektur Fragen. Diese Anwendung hat eine Anzahl 64bit-nur Module (psycopg2) verwendet. Ich möchte zu bleiben Weg von dem Versuch, dieses zu bauen, wenn es unmöglich zu laufen als 32-bit-ausführbare Datei.

Aktuellen Gedanken

Ich fühle, dass dies möglich sein könnte (wenn die Module haben 32bit-Unterstützung) mit dem build.py mit Python gezwungen, in 32-bit-Modus. Macht das Sinn?

Update

Ich hatte mehrere Durchbrüche auf dem ersten Programm, das ich baute. Es stellt sich heraus, die performance-Probleme, war einzig und allein basierend auf der Geschwindigkeit der beiden Maschinen. Meine dev-Maschine hatte genug Kraft, um Umfrage das USB-Gerät schnell genug ist und die viel langsamer-test-Plattform (Windows XP) nicht.

Ich das Problem behoben, indem die Art, die ich befragte den USB-port. Nun, dass dies behoben wurde, konnte ich die exe-Datei auf beiden Systemen. Ein neues problem hatte, wenn Sie versuchen, erstellen Sie die ausführbare Datei als einzelne Datei. Beim ausführen von pyinstaller ist Build.py es zieht Sie alle erforderlichen DLL ' s, die app muss laufen. Dies schien gut zu funktionieren auf den ersten, aber als ich versuchte, führen Sie die exe-Datei, die ich gebaut habe auf Windows 7 64bit, es würde nicht auf Windows XP ausgeführt werden, da der USB-dongle ist DLL wurde nicht als eine gültige erkannt DLL.

Um die einzelne exe-Datei für die Ausführung in beiden Systemen, habe ich zunächst versucht zu entfernen, die DLL aus der .spec-Datei (die offenbar zu einem python-Skript). Es war bequem, weil ich war in der Lage zu ändern die Liste enthält vor der build-Befehl mit normalen python-Liste mit Modifikatoren. Meine Hoffnung war, dass wenn die DLL nicht gefunden wurde in der exe-temp-Verzeichnis würde es finden, es auf dem system PFAD. Während dieser Ansatz könnte Arbeit, ich konnte es nicht ausführen, ohne dass viele Fehler.

Mein zweiter Versuch war um die Anwendung zu erstellen, auf dem Windows XP Rechner (wobei die DLL eingebettet), in der Hoffnung, dass die Win XP-DLL funktioniert in Windows 7. Erfolg! Diese Konfiguration funktioniert gut; aber ich glaube fest daran, dass dies nicht die beste Lösung ist, hängt ausschließlich von den älteren DLL läuft auf einem neueren OS.

Kommentar zu dem Problem - Öffnen
Ich weiß, dass Sie eine funktionierende Lösung, aber haben Sie versucht, die Installation von 32-bit-Python auf Win7-Rechner und läuft build.py? Sie würde alle installieren, die 32-bit-Abhängigkeiten, aber das sollte schnappen Sie sich die richtige 32-bit-DLLs. (Auf der anderen Seite, kann es nicht funktionieren, wenn Sie brauchen, um Unterstützung für XP.) Kommentarautor: Velociraptors
@Velociraptoren: Die einzige DLL, die es schien zu greifen, dass ich das nicht wollte, wurde die DLL für den USB-dongle. Dieses Gerät ist die software nur 32bit, also ich werde auf ein Glied und vermute, dass der Treiber war 32bit als auch. Also in diesem Fall ich denke, es war ein 7 vs XP-Treiber-Inkompatibilität-Problem. Kommentarautor: Adam Lewis

InformationsquelleAutor der Frage Adam Lewis | 2011-08-23

Schreibe einen Kommentar