Seite 1 von 1

python c api & pyinstaller bzw py2exe

Verfasst: Freitag 4. Mai 2007, 13:38
von menno
hallo zusammen,

um eine spezielle hardware mit python verwenden zu können, habe ich mir mit dem bcc55 ein einfaches python-wrapper-modul, für die hardware-api (c-header-file und windows-dll) gebastelt.
verwende ich nun mein python-modul in einem skript und führe dieses skript direkt per interpreter aus, funktioniert alles wunderbar; baue ich mir aber eine exe-file mit py2exe oder dem pyinstaller läuft's leider nicht. das python-skript startet zwar, beim aufruf der init-funktion der api bleibt es aber hängen und die cpu-last schnellt auf 100% hoch.
ein beenden der anwendung ist nur per hartem task-kill möglich.

habt ihr irgend eine idee, woran dies liegen könnte, und wie ich doch zu meiner gewünschten exe (aus python heraus) komme?

thnx
menno

Verfasst: Samstag 5. Mai 2007, 11:02
von Sr4l
Dürfte eigentlich nicht passieren, da die executable auch nur ein gepackter Interpreter ist.
Hast du es mal ohne "Single File" gemacht?

Verfasst: Samstag 5. Mai 2007, 13:24
von BlackJack
Ist denn auch alles notwendige "eingepackt"? Hat der bcc vielleicht irgendwelche Laufzeitbibliotheken die man dazupacken müsste?

Verfasst: Samstag 5. Mai 2007, 18:11
von menno
Hallo,

vielen Dank für eure Antworten.

@Sr4l: ... dachte ich auch. Ich hab's trotzdem als 'SingleFile' und 'Normal', als 'Windowed' und 'Console' versucht. Hat aber alles nichts gebracht.

@BlackJack: Keine Ahnung ob der BCC zusätzliche Libs benötigt. Aber soweit ich weiss sind *.pyd-Files 'umbenannte' *-dll-Files und wieso sollten da spezielle Laufzeitumgebungen erforderlich sein? Und wie gesagt, wenn ich meine Python-Anwendung direkt im installierten Interpreter ausführe funktioniert alles.

Sonst irgendwelche Ideen? Ich weiss leider echt nicht mehr weiter.

menno

Verfasst: Samstag 5. Mai 2007, 18:14
von Leonidas
menno hat geschrieben:Aber soweit ich weiss sind *.pyd-Files 'umbenannte' *-dll-Files und wieso sollten da spezielle Laufzeitumgebungen erforderlich sein?
Weil der Compiler eventuell automatisch gegen irgendwelche Libs linkt, die dann nicht verfügbar sein könnten. So in etwa wie alle Cygwin-Programme die ``cygwin1.dll`` benötigen.

Verfasst: Montag 7. Mai 2007, 06:33
von menno
Aber das würde ja auch bedeuten, dass meine anwendung auch dann nicht funktioniert, wenn ich sie direkt im interpreter ausführe ... tut sie aber.
Und das die cpu-last bei der generierten EXE auf 100% steigt, weil eine laufzeitumgebung fehlt kann ich mir auch nicht vorstellen. Ich hätte da dann eher mit einer fehlermeldung gerechnet.

Verfasst: Montag 7. Mai 2007, 11:40
von menno
OK.
Hat sich erledigt :o)

Ursache für mein Problem war, das PyInstaller und Py2Exe (nur) eine bestimmte DLL der Hardware-API mit ins DIST gepackt haben.
Ergänze ich hier alle nötigen Files passt es.

Danny