Hallo zusammen,
habe vor drei Jahren viel mit Python gearbeitet ( Hobby ).
Ich habe damals mit/an einem Projekt gearbeitet wo ein Python Frontend ohne GUI etc. einen Quelltext geparst und in Binärdaten übersetzt hat, welche dann vom Numbercruncher der in C geschrieben war ausgeführt worden sind.
Unter Linux habe ich das als komplettpaket mit makefile prima hin und her schieben können, auf den Systemen ist ja praktisch alles vorhanden.
Jetzt möchte ich, da ich wieder mehr Zeit privat habe dieses Projekt auf Windows portieren.
Hier wäre mir wichtig das wenn ich die Software anderen zur Verfügung stellen würden nur Python und evtl. eine Runtime Bibliothek installiert werden müsste und die C Module vorkompilierte von mir kommen.
Jetzt meine Frage.
Geht das so einfach unter Windows oder kann ich das vergessen.
Wenn es geht, würde ich gerne mit dem Python Download von Python.org und Microsoft Visual C++ 2010 arbeiten. Das sagt mir von der Bedienung sehr zu. Würde aber auch zur GNU Variante mit dem MingW greifen wenn mehr für diese Kombination spricht.
Vielen Dank im Vorraus
Neuanfang unter Windows
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Hallo szapf, willkommen im Forum,
Ich verstehe irgendwie nicht wozu du einen C++ Compiler brauchst und Makefiles. Ich dachte der Numbercruncher ist ein Interpreter der den von Python generierten Code ausführt. Zumindest so liest sich dein Post und macht irgendwie gar keinen Sinn.
Oder generierst du C-Module, die fürs Number-Crunching verwendet werden? Generierst du diese zur Laufzeit oder zur Entwicklungszeit? Weil bei letzterem könntest du natürlich vorkompilierte Binaries mitliefern.
Oder du willst etwas völlig anderes und aus deinem Post wird nicht klar was.
Ich verstehe irgendwie nicht wozu du einen C++ Compiler brauchst und Makefiles. Ich dachte der Numbercruncher ist ein Interpreter der den von Python generierten Code ausführt. Zumindest so liest sich dein Post und macht irgendwie gar keinen Sinn.
Oder generierst du C-Module, die fürs Number-Crunching verwendet werden? Generierst du diese zur Laufzeit oder zur Entwicklungszeit? Weil bei letzterem könntest du natürlich vorkompilierte Binaries mitliefern.
Oder du willst etwas völlig anderes und aus deinem Post wird nicht klar was.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Es wird ein Pseudoassemblercode geparst und daraus wird eine Art Binärcodes erzeugt. Der wird dann an ein C-Modul übergeben was ihn verarbeitet. Das Modul möchte ich selber erstellen und die Nutzer sollen es ohne größeres zutun verweden können. Was ist dafür die beste Kombination.Leonidas hat geschrieben:Hallo szapf, willkommen im Forum,
Ich verstehe irgendwie nicht wozu du einen C++ Compiler brauchst und Makefiles. Ich dachte der Numbercruncher ist ein Interpreter der den von Python generierten Code ausführt. Zumindest so liest sich dein Post und macht irgendwie gar keinen Sinn.
Oder generierst du C-Module, die fürs Number-Crunching verwendet werden? Generierst du diese zur Laufzeit oder zur Entwicklungszeit? Weil bei letzterem könntest du natürlich vorkompilierte Binaries mitliefern.
Oder du willst etwas völlig anderes und aus deinem Post wird nicht klar was.
Aus älteren Posting habe ich erfahren das für manche Sachen ein rekompilieren der Python Quellen mit dem C-Compiler nötig wäre. Diese Postings waren schon was älter, aber ich bin nicht so auf dem laufenden was die Entwicklung unter Windows betrifft.
Ich hab
Wenn deine Bibliothek als normale DLL vorliegt, dann solltest du die mit ctypes ansprechen koennen, und damit ist dann Windows auch kein Problem. Das wuerde ich dem bauen eines extension-Moduls per se erstmal vorziehen - das lohnt sich nur, wenn du deinerseits schon grossartig C++/OO Kram in der Bibliothek hast, den zu exponieren sich lohnen wuerde.
Könnte man auch komplett ohne Installationsroutine machen. Und zwar als One-File-EXE, wo der spätere Anwender halt nur nen Doppelklick drauf machen muss. Solche ausführbaren, sich selbst entpackenden "EXE-Archive" kann man z.B. mit PyInstaller erstellen (falls du das noch nicht kanntest). Ist unter Windows auch nicht gerade unüblich, weil man da nunmal kein vorinstalliertes Python erwarten kann.szapf hat geschrieben:Hier wäre mir wichtig das wenn ich die Software anderen zur Verfügung stellen würden nur Python und evtl. eine Runtime Bibliothek installiert werden müsste und die C Module vorkompilierte von mir kommen.
Es gibt zwar immer wieder "philosophische" Debatten darüber, ob man nicht wie unter Linux besser die nötigen Abhängigkeiten durch den Anwender installieren lassen sollte, aber letztlich ist es sowohl für dich als auch für den User meist einfacher, so eine besagte EXE-Datei zu benutzen. Es wäre zumindest eine denkbare Alternative. Mit nem MSI-Skript oder so geht's natürlich auch. Das käme dann als "ordentliche" `setup.exe` daher, ist aber relativ aufwändig für den Programmierer, so'n Ding zu schreiben (zumindest ist eine entsprechende Einarbeitung nötig).
Hi,snafu hat geschrieben:Könnte man auch komplett ohne Installationsroutine machen. Und zwar als One-File-EXE, wo der spätere Anwender halt nur nen Doppelklick drauf machen muss. Solche ausführbaren, sich selbst entpackenden "EXE-Archive" kann man z.B. mit PyInstaller erstellen (falls du das noch nicht kanntest). Ist unter Windows auch nicht gerade unüblich, weil man da nunmal kein vorinstalliertes Python erwarten kann.szapf hat geschrieben:Hier wäre mir wichtig das wenn ich die Software anderen zur Verfügung stellen würden nur Python und evtl. eine Runtime Bibliothek installiert werden müsste und die C Module vorkompilierte von mir kommen.
Es gibt zwar immer wieder "philosophische" Debatten darüber, ob man nicht wie unter Linux besser die nötigen Abhängigkeiten durch den Anwender installieren lassen sollte, aber letztlich ist es sowohl für dich als auch für den User meist einfacher, so eine besagte EXE-Datei zu benutzen. Es wäre zumindest eine denkbare Alternative. Mit nem MSI-Skript oder so geht's natürlich auch. Das käme dann als "ordentliche" `setup.exe` daher, ist aber relativ aufwändig für den Programmierer, so'n Ding zu schreiben (zumindest ist eine entsprechende Einarbeitung nötig).
nein, den PyInstaller kannte ich noch nicht, aber das hört sich sehr gut an.
Dann würde ich folgende Kombination ins Auge fassen.
Der Numbercruncher in C in eine DLL gepackt und das Python Frontend durch den PyInstaller als EXE File.
Vielen Dank an alle die geantwortet haben.