Was mich mal interessiert, wie läuft das jetzt wenn ich mein Python Programm z.B. für den Mac, für Linux und für Windows compilieren möchte.
Also für Windows mach ich das immer mit py2exe, das geht da Recht einfach.
Aber ich würde auch gerne mein Programm für Linux und Mac bereitstellen ohne jetzt die ganze Source veröffentlichen zu müssen.
Kennt sich damit jemand aus? Und nein, steht nicht in der Python Hilfe wie man sowas macht.
Gruß Requester
Python Programm für mehrere Betriebssysteme?
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Unter Linux ist normalerweise ein Python Interpreter vorhanden entsprechend ist es normal Python Sourcecode zu Verteilen.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
http://pyinstaller.python-hosting.com/
http://www.py2exe.org/index.cgi/FrontPage
Für den Mac gibt es auch bereits im MacPython-Port einen App-Builder, der wie Pyinstaller aus einer .py odr .pyw Datei direkt ausführbare Programme erstellt.
Allerdings ist das Ganze wohl noch nicht ganz ausgereift. Ich habe auf meinem Mac mit MacPython 2.5.2 experimentiert und versucht, ein solches Programm zu erstellen. Aber weder der AppBuilder noch der normale Python Launcher von Macpython (Dieses Icon mit der aufrechten Rakete) funktionieren einwandfrei. Der Launcher bleibt bei jedem Skript einfach hängen und schliesst sich nahc paar Sekunden, der AppBuilder erzeugt ein scheinbares Programm, aber beim Anklicken des erstellten Icons öffnet sich kurz ein Fenster und schliesst sich sofort wieder.
Ich habe dazu auch schonmal intensiver gesucht und auf der BugList von Python einen Eintrag mit 2 Kommentaren gefunden, die dieses Problem beschrieben haben. Aber es gab dazu weder einen Patch, ein Update noch sonst eine Beschreibung, mit der man dieses Problem beheben könnte.
Es kann natürlich auch sein, dass ich mich absolut blöd angestellt habe. Aber da ich auch hier auf meinem Win XP Rechner mit Pyinstaller einwandfreie, ausführbare .exe Dateien erstelle und der Vorgang deutlich mehr Eingriffe braucht, und auch laut Google Suche mehrere Mac User mit beiden Anwendungen (also dem Launcher und dem AppBuilder) die selben Probleme haben, gehe ich mal davon aus, dass es wohl an irgendeinem internen Bug in der Portierung liegt.
Gruss
ne0h
http://www.py2exe.org/index.cgi/FrontPage
Für den Mac gibt es auch bereits im MacPython-Port einen App-Builder, der wie Pyinstaller aus einer .py odr .pyw Datei direkt ausführbare Programme erstellt.
Allerdings ist das Ganze wohl noch nicht ganz ausgereift. Ich habe auf meinem Mac mit MacPython 2.5.2 experimentiert und versucht, ein solches Programm zu erstellen. Aber weder der AppBuilder noch der normale Python Launcher von Macpython (Dieses Icon mit der aufrechten Rakete) funktionieren einwandfrei. Der Launcher bleibt bei jedem Skript einfach hängen und schliesst sich nahc paar Sekunden, der AppBuilder erzeugt ein scheinbares Programm, aber beim Anklicken des erstellten Icons öffnet sich kurz ein Fenster und schliesst sich sofort wieder.
Ich habe dazu auch schonmal intensiver gesucht und auf der BugList von Python einen Eintrag mit 2 Kommentaren gefunden, die dieses Problem beschrieben haben. Aber es gab dazu weder einen Patch, ein Update noch sonst eine Beschreibung, mit der man dieses Problem beheben könnte.
Es kann natürlich auch sein, dass ich mich absolut blöd angestellt habe. Aber da ich auch hier auf meinem Win XP Rechner mit Pyinstaller einwandfreie, ausführbare .exe Dateien erstelle und der Vorgang deutlich mehr Eingriffe braucht, und auch laut Google Suche mehrere Mac User mit beiden Anwendungen (also dem Launcher und dem AppBuilder) die selben Probleme haben, gehe ich mal davon aus, dass es wohl an irgendeinem internen Bug in der Portierung liegt.
Gruss
ne0h
P.S.:
Auf dem Mac ist das aber auch nicht zwingend nötig, da dort Python (allerdings meisst eine ältere Version von Apple) vorinstalliert ist und alle Skripte sich relativ angenehm direkt aufrufen lassen, ohne ausfürbare Programme erzeugen zu müssen.
ne0h
Auf dem Mac ist das aber auch nicht zwingend nötig, da dort Python (allerdings meisst eine ältere Version von Apple) vorinstalliert ist und alle Skripte sich relativ angenehm direkt aufrufen lassen, ohne ausfürbare Programme erzeugen zu müssen.
ne0h
Mit pyinstaller geht das auch für/unter Linux - theoretisch. Meine Experimente in diese Richtung waren aber eher ernüchternd. Zwar konnte ich eine ausführbare Datei erstellen, die alles drin hatte, und diese lief auch auf dem Rechner, auf dem ich sie erstellt hatte.Requester hat geschrieben:Aber ich würde auch gerne mein Programm für Linux und Mac bereitstellen ohne jetzt die ganze Source veröffentlichen zu müssen.
Auf einem anderen Rechner, der die gleiche Linux Version/Distribution nur eben eine nicht identische Konfiguration und Paketzusammenstellung hatte, ließ sich die Datei hingegen nicht ausführen.
Der Hinweis von veers zu Linux ist grundsätzlich natürlich richtig. Probleme kann es aber geben, wenn ein Python-Skript eine (ganz) aktuelle Python-Version benötigt, die es für die von einem konkreten Anwender verwendete Distribution (noch oder gar) nicht als fertiges Paket gibt.
Klar, das lässt sich irgendwie lösen, aber es gibt eben Fälle, wo man einfach nur möchte, dass der Anwender das Programm erhält, startet und fertig.
Und es gibt ja auch Anwender, die durch alles, was darüber hinaus geht, abgeschreckt werden und sich überfordert fühlen (manchmal ja auch sind) [auch wenn das in der Linux-Welt wahrscheinlich seltener vorkommt als in der Windows-Welt].
Ich frage nur aus Interesse, was du dabei gewinnst, wenn du die Quellen nicht veröffentlichst.Requester hat geschrieben:Aber ich würde auch gerne mein Programm für Linux und Mac bereitstellen ohne jetzt die ganze Source veröffentlichen zu müssen.
Es gibt leider zu viele die sich mit der arbeit von anderen Schmücken. Allein und aus diesem Grund möchte ich die Source nicht veröffentlichen.lunar hat geschrieben:Ich frage nur aus Interesse, was du dabei gewinnst, wenn du die Quellen nicht veröffentlichst.Requester hat geschrieben:Aber ich würde auch gerne mein Programm für Linux und Mac bereitstellen ohne jetzt die ganze Source veröffentlichen zu müssen.
Oder kann ich nicht manche Dateien compiliert veröffentlichen? Oder lässt sich das dann nicht starten?
Gruß Requester
Das Thema hatten wir schon einige Male im Forum. Ich erinnere mich an einen Thread aus den letzten Wochen, wo es ziemlich ausführlich behandelt wurde.
Dabei ging es auch um solche Fragen, mit welchem Aufwand es möglich ist, aus dem Bytecode oder gar eine exe-Datei den Quellcode zu rekonstruieren und/oder was man sonst tun kann, damit andere den Quelltext nicht bekommen.
Such doch mal danach - lohnt sich.
Dabei ging es auch um solche Fragen, mit welchem Aufwand es möglich ist, aus dem Bytecode oder gar eine exe-Datei den Quellcode zu rekonstruieren und/oder was man sonst tun kann, damit andere den Quelltext nicht bekommen.
Such doch mal danach - lohnt sich.
Man kann auch mit quelloffener Software Geld verdienenRequester hat geschrieben:Es gibt leider zu viele die sich mit der arbeit von anderen Schmücken. Allein und aus diesem Grund möchte ich die Source nicht veröffentlichen.lunar hat geschrieben:Ich frage nur aus Interesse, was du dabei gewinnst, wenn du die Quellen nicht veröffentlichst.Requester hat geschrieben:Aber ich würde auch gerne mein Programm für Linux und Mac bereitstellen ohne jetzt die ganze Source veröffentlichen zu müssen.
Python-Bytecode ist zwar ein Kompilat, aber sehr, sehr abstraktes. Die Rückübersetzung ist relativ einfach möglich. Zudem kann man py2exe-Anwendungen sehr einfach analyisieren, die .pyc Dateien extrahieren, und anschließend debuggen. Binärcompiler für Python existieren meines Wissens nicht.Oder kann ich nicht manche Dateien compiliert veröffentlichen? Oder lässt sich das dann nicht starten?
Gegen Code-Diebstahl hilft eine entsprechende Lizenz mehr als das Verstecken von Code.
Geld verdienen will ich ja gar nicht.
Aber sagen wir jetzt mal ich habe 3 Dateien.
Einmal die install.py (notwendig für Mac/Linux), die Source.py und die Data.py.
Da kann ich nicht die Source.py und Data.py als pyc beilegen, dann klappt die install nicht mehr oder?
Sorry, ich kenn mich damit halt noch nicht so aus.
@pütone: Krieg ich nen Stichwort wonach ich suchen muss? Interessiert mich nämlich auch.
Gruß Requester
Aber sagen wir jetzt mal ich habe 3 Dateien.
Einmal die install.py (notwendig für Mac/Linux), die Source.py und die Data.py.
Da kann ich nicht die Source.py und Data.py als pyc beilegen, dann klappt die install nicht mehr oder?
Sorry, ich kenn mich damit halt noch nicht so aus.
@pütone: Krieg ich nen Stichwort wonach ich suchen muss? Interessiert mich nämlich auch.
Gruß Requester
Ich glaube, es war dieser Thread, an den ich mich erinnerte:Requester hat geschrieben:@pütone: Krieg ich nen Stichwort wonach ich suchen muss? Interessiert mich nämlich auch.
http://www.python-forum.de/topic-14526.html
Gelegentlich schweift er mal ab, aber er enthält einige gehaltvolle, nachdenkenswerte Beiträge.
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Frage: Was ist schlimmer:Requester hat geschrieben:Es gibt leider zu viele die sich mit der arbeit von anderen Schmücken. Allein und aus diesem Grund möchte ich die Source nicht veröffentlichen.
A) Jemand anderes Schmückt sich mit deiner Arbeit
B) Niemand wird deine Arbeit je zu Gesicht bekommen
Wobei Niemand als keine Person mit guten Absichten. Wobei Personen mit guten Absichten zum Beispiel unser BlackJack, Mitstreiter oder Headhunter mit (teilweise) interessanten Job Angeboten sein können.
Ich glaube du machst dir da zu viele Sorgen. Die Zeit die du mit dem verkrüppeln deines Quellcodes verbringst ist viel besser zur Entwicklung einer tollen Anwendung geeignet.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das man aus .pyc wieder den .py Sourcecode erzeugen kann, wird immer wieder behauptet. Theoretisch ist das ja auch richtig, aber praktisch ist es nicht einfach! Es gab ja mal Tools wie pyc2py, aber die Projekte sind IMHO alle tot.lunar hat geschrieben:Python-Bytecode ist zwar ein Kompilat, aber sehr, sehr abstraktes. Die Rückübersetzung ist relativ einfach möglich. Zudem kann man py2exe-Anwendungen sehr einfach analyisieren, die .pyc Dateien extrahieren, und anschließend debuggen. Binärcompiler für Python existieren meines Wissens nicht.
IMHO ist der Abschnitt in der [wiki]FAQ#IchWillAberUnbedingtEinenCompiler[/wiki] darüber auch so nicht richtig:
Es ist eben aufgrund fehlender Tools nicht trivial.Sei dir aber bewusst, dass es relativ trivial ist, aus dem Bytecode den Quellcode und die Funktionsweise der Software zu rekonstruieren! (reverse engineering).
Da wir schon mal beim Thema sind. Man sollte allerdings keine *.pyc nutzten, sondern lieber *.pyo. Dort (mit -OO) sind die DocString nicht enthalten, siehe auch http://www.python-forum.de/post-46991.html#46991
EDIT: Achja: [wiki]Warum ist quelloffene Software nicht böse[/wiki]
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das Tool ist mir neu. Ich kannte nur pyc2py...veers hat geschrieben:Wie wäre es mit decompyle?
Allerdings ist decompyle nicht frei, schade, so kann man es nicht einfach mal testen, was es wirklich taugt:
http://www.crazy-compilers.com/decompyle/service.html
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Hm im git branch von unholy scheint eine Kopie zu sein. Hat zwar einige Probleme mit komplexeren Python2.5 Scripts aber diese würden sich vermutlich relativ schnell fixen lassen.jens hat geschrieben:Das Tool ist mir neu. Ich kannte nur pyc2py...veers hat geschrieben:Wie wäre es mit decompyle?
Allerdings ist decompyle nicht frei, schade, so kann man es nicht einfach mal testen, was es wirklich taugt:
http://www.crazy-compilers.com/decompyle/service.html
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Die Frage ist doch auch hier wieder ob die Arbeit überhaupt schützenswert ist. *Benutzen* kann den Code auch jemand der nur das *.pyc bekommt. Sogar "verändern" via Delegation oder "monkey patching" kann man ihn. Um heraus zu finden wie der Code im *.pyc funktioniert kann man eine Python-Shell verwenden und im Zweifelsfall auch mal per Hand das `dis`-Modul anwerfen.
Aber den meisten Quelltext kann man wohl einfacher und schneller selber neu schreiben, als irgend wo anders klauen. Insbesondere bei Python, wo man wenig "boilerplate code" braucht und sich auf's wesentliche konzentrieren kann.
@jens: Der kommerzielle decompyle-Service kann mittlerweile bis Python 2.5 Bytecode wieder in Quelltext überführen. Die FAQ spricht von "relativ einfach", nicht von "kostenlos".
Aber den meisten Quelltext kann man wohl einfacher und schneller selber neu schreiben, als irgend wo anders klauen. Insbesondere bei Python, wo man wenig "boilerplate code" braucht und sich auf's wesentliche konzentrieren kann.
@jens: Der kommerzielle decompyle-Service kann mittlerweile bis Python 2.5 Bytecode wieder in Quelltext überführen. Die FAQ spricht von "relativ einfach", nicht von "kostenlos".
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ich hab gesehen, es gibt die alte Version von decompyle: http://packages.debian.org/etch/decompyle
Hab die FAQ angepasst: [wiki]FAQ#IchWillAberUnbedingtEinenCompiler[/wiki]
Hab die FAQ angepasst: [wiki]FAQ#IchWillAberUnbedingtEinenCompiler[/wiki]
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Auch Nett:
"Need to decompyle a py2exe file? Ask us!"
...Wäre eigentlich mal ein Projekt die verfügbare Version auf 2.5 Stand zu bringen.
"Need to decompyle a py2exe file? Ask us!"
...Wäre eigentlich mal ein Projekt die verfügbare Version auf 2.5 Stand zu bringen.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Offensichtlich gibt es keinen in der OpenSource Szene der daran Interesse hat Liegt vielleicht daran, weil eigentlich keiner den Wunsch hat, seine Sourcen zu verstecken. Sowas kommt IMHO nur von Einsteigern, die in der OpenSource Welt noch nicht angekommen sind...veers hat geschrieben:...Wäre eigentlich mal ein Projekt die verfügbare Version auf 2.5 Stand zu bringen.