Seite 1 von 1
Cython for dummies
Verfasst: Donnerstag 6. Oktober 2011, 21:58
von joh#
Guten abend,
ich hätte gern aus meinem Python Programm eine .exe bzw. ein binary gemacht,
was auch 'alleine' verteilbar/lauffähig ist.
Dazu habe ich cython probiert nach:
http://docs.cython.org/src/userguide/tutorial.html
Die (unter Ubuntu) erzeugte .so lässt sich auch benutzen (von python aus)
aber wenn ich das erzeugte helloworld.c duch den gcc jage, hagelt es Fehler-
meldungen:
Code: Alles auswählen
"Python.h, structmember.h . ... nicht gefunden,
#error Python headers needed to compile C extensions, please install development version of Python . . ."
Was muss ich tun?
joh
Re: Cython for dummies
Verfasst: Donnerstag 6. Oktober 2011, 23:12
von BlackJack
@joh#: Die Fehlermeldung sagt es doch im Grunde ziemlich deutlich: Die Python.h-Headerdatei konnte nicht gefunden werden. Entweder ist sie nicht vorhanden oder der Compiler braucht den Hinweis wo er sie finden kann.
Aber wozu soll der manuelle Aufruf gut sein, wenn Du doch schon anderweitig die *.so erzeugt hast? Falls Du hoffst dadurch ein Programm heraus zu bekommen, dann hast Du falsche Erwartungen. Cython erzeugt C-Quelltext für Erweiterungsmodule für CPython und keine eigenständigen Programme.
Re: Cython for dummies
Verfasst: Freitag 7. Oktober 2011, 09:03
von joh#
BlackJack hat geschrieben: Falls Du hoffst dadurch ein Programm heraus zu bekommen, dann hast Du falsche Erwartungen. Cython erzeugt C-Quelltext für Erweiterungsmodule für CPython und keine eigenständigen Programme.
mmmhhh.... Ich dachte wenn cython C-Quelltext erzeugt,kann ich den auch einfach mit gcc übersetzen...?
Was nehmen wir denn dann ein eigenständiges Programm zu bekommen?
joh
Re: Cython for dummies
Verfasst: Freitag 7. Oktober 2011, 09:26
von lunar
@joh#: Es gibt keinen Python-Compiler, der aus Python-Modulen nativ ausführbare Dateien erzeugt. Was es gibt, sind Projekte wie pyinstaller oder py2exe, die ein Modul mitsamt dem Python-Interpreter und allen Abhängigkeiten so verpacken, dass man das Resultat ausführen kann, ohne den Python-Interpreter installieren zu müssen. Es läuft dann aber trotzdem noch ein Python-Interpreter.
Im Allgemeinen braucht es das nur unter Windows, unter Linux ist Python eigentlich immer vorinstalliert.
Re: Cython for dummies
Verfasst: Freitag 7. Oktober 2011, 09:28
von BlackJack
@joh#: Cython erzeugt C-Quelltext und den kann man auch mit gcc übersetzen. Aber nicht jeder C-Quelltext beschreibt ein eigenständig lauffähiges Programm. Bibliotheken alleinstehend oder Module/Plugins ohne die Wirtsumgebung auszuführen macht ja auch keinen Sinn.
Warum willst Du denn ein ”eigenständiges” Programm haben? Dazu noch unter Linux? Das ist dort sehr unüblich.
Re: Cython for dummies
Verfasst: Freitag 7. Oktober 2011, 17:33
von joh#
BlackJack hat geschrieben:@joh#: Cython erzeugt C-Quelltext und den kann man auch mit gcc übersetzen. Aber nicht jeder C-Quelltext beschreibt ein eigenständig lauffähiges Programm. Bibliotheken alleinstehend oder Module/Plugins ohne die Wirtsumgebung auszuführen macht ja auch keinen Sinn.
OK, langsam versteh' ich es, sie SW Umgebung sieht mittlerweile anders aus als zur
Nachwendezeit, als der Pascal-Compiler eine .exe/.com ausspuckte, die dann 'überall' lief.
BlackJack hat geschrieben:
Warum willst Du denn ein ”eigenständiges” Programm haben? Dazu noch unter Linux? Das ist dort sehr unüblich.
Ich hab letztes Weihnachten für Linux ein DVD-Abspielprogramm bestellt, da kam dann eine
Datei, draufkopiert, gestartet fertig. Fand ich irgendwie einfach und damit gut. Und wenn ich
in Python "hallowelt" ausgeben lasse, dann sollten doch die Abhängigkeiten von Bibliothen dgl.
nicht so riesig sein, daraus ein 'eigenständiges' Binary zu machen.
joh
Anekdote/OT:
Als ich das mitgelieferte Programm zum einfachen Auslesen meines Geiger-Zählers über RS232 benutzen wollte, installierte das erstmal lustige 115 MB .NET Umgebung und
dann nochmal zig MB Acroread9 . . .
Re: Cython for dummies
Verfasst: Freitag 7. Oktober 2011, 17:33
von joh#
lunar hat geschrieben:
Im Allgemeinen braucht es das nur unter Windows, unter Linux ist Python eigentlich immer vorinstalliert.
D.h. ich kann immer darauf vertrauen, bei einem x-beliebeigen linux einen python Interpreter
vorzufinden?
joh
Re: Cython for dummies
Verfasst: Freitag 7. Oktober 2011, 17:43
von cofi
joh# hat geschrieben:Anekdote/OT:
Als ich das mitgelieferte Programm zum einfachen Auslesen meines Geiger-Zählers über RS232 benutzen wollte, installierte das erstmal lustige 115 MB .NET Umgebung und
dann nochmal zig MB Acroread9 . . .
So OT ist das gar nicht, den das ist genau _der_ Grund warum man keine eigenstaendigen Programme ausliefert. Wenn jedes Programm seine Abhaengigkeiten mitbringt ...
Ein Programm ueber die Paketverwaltung zu installieren ist im allgemeinen _noch_ einfacher, da man die Programme nichtmal herunterladen muss.
Auf jedem "x-beliebigen" Linux nicht unbedingt, aber jede groessere Distribution hat ein Python dabei, das Problem ist die Version, jens hat dazu erst einen Thread aufgemacht:
http://www.python-forum.de/viewtopic.php?f=1&t=27526
Re: Cython for dummies
Verfasst: Freitag 7. Oktober 2011, 17:52
von lunar
@joh#: Auf jedem “x-beliebigen Linux“ sicherlich nicht, doch auf allen gängigen Desktop-Distributionen für den normalen, ahnungslosen PC-Nutzer. Und die Nutzer mit Ahnung sind eh in der Lage, Python nachzuinstallieren.
Wenn Du bei Python "hello world" ausgeben lässt, passiert im Hintergrund wesentlich mehr als beim äquivalenten Programm in C oder Pascal. Der hohe Abstraktionsgrad von Python, samt all der schönen netten Features, die einem das Python-Programmieren so versüßen, kommen ja nicht aus dem Nichts, sondern werden durch eine umfangreiche Laufzeitumgebung gestellt.
Die Technik hat sich seit der Nachwendezeit um Einiges weiterentwickelt, Anwendungen sind komplexer geworden, und mithin benötigt man auch mächtigere Sprachen, mit entsprechend umfangreichen Laufzeitumgebungen.
Fazit: Es ist zum gegenwärtigen Zeitpunkt nicht möglich, ein wirklich eigenständiges Python-Programm zu erzeugen, wenn man eigenständig im Sinne von C definiert. Wobei selbst das nicht wirklich eigenständig ist, da auch ein C-Programm an einer Laufzeitbibliothek (nämlich der C-Standardbibliothek) und am Betriebssystem selbst hängt. Ein kompiliertes C-Programm ist also beleibe nicht eigenständig, und lässt sich auch nicht überall ausführen. Über die Grenzen verschiedener Betriebssysteme hinweg nicht, und manchmal nicht einmal über verschiedene Distributionen hinweg.
Zu Deiner Anekdote: Wie alt ist Dein System, dass Du .NET nachinstallieren müsstest?! .NET wird seit Jahren über Windows Update verteilt, und ist eigentlich auf jedem modernen System installiert…
Re: Cython for dummies
Verfasst: Samstag 8. Oktober 2011, 14:28
von joh#
lunar hat geschrieben:Wie alt ist Dein System, dass Du .NET nachinstallieren müsstest?! .NET wird seit Jahren über Windows Update verteilt, und ist eigentlich auf jedem modernen System installiert…
das ist ein Win XP SP3 in einer Virtualbox laufend
Re: Cython for dummies
Verfasst: Samstag 15. Oktober 2011, 13:48
von Leonidas
Also ein System was inzwischen ziemlich genau 10 Jahre alt ist (25. Oktober 2001), die aktuellsten Patches auch über 3 Jahre her (SP3 = 21. April 2011). Ich denke ich brauche nicht sagen, wie die Computer-Welt Anno 2001 ausgesehen hat... modern ist was anderes.
Re: Cython for dummies
Verfasst: Dienstag 31. Januar 2012, 23:17
von NiklasRosenstein
Das --embed Kommandozeilen-argument weist Cython dazu an, den Code für eine ausführbare Datei zu erstellen. Vergiss allerdings nicht, dass die python27.dll (oder andere, je nach Python Version) vorhanden sein muss.
Grüße, Niklas
Re: Cython for dummies
Verfasst: Mittwoch 1. Februar 2012, 02:54
von BlackJack
@NiklasRosenstein: Nicht nur die DLL sondern mindestens alles was man direkt oder indirekt an Modulen benutzt hat.