Python Programm für mehrere Betriebssysteme?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Requester
User
Beiträge: 26
Registriert: Samstag 10. Mai 2008, 21:59

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. :lol:

Gruß Requester
Benutzeravatar
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. :wink:
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
ne0h
User
Beiträge: 115
Registriert: Samstag 16. Februar 2008, 11:35

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
ne0h
User
Beiträge: 115
Registriert: Samstag 16. Februar 2008, 11:35

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
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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.
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.
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].
lunar

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.
Ich frage nur aus Interesse, was du dabei gewinnst, wenn du die Quellen nicht veröffentlichst.
Requester
User
Beiträge: 26
Registriert: Samstag 10. Mai 2008, 21:59

lunar hat geschrieben:
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.
Ich frage nur aus Interesse, was du dabei gewinnst, wenn du die Quellen nicht veröffentlichst.
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.

Oder kann ich nicht manche Dateien compiliert veröffentlichen? Oder lässt sich das dann nicht starten?

Gruß Requester
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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.
lunar

Requester hat geschrieben:
lunar hat geschrieben:
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.
Ich frage nur aus Interesse, was du dabei gewinnst, wenn du die Quellen nicht veröffentlichst.
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.
Man kann auch mit quelloffener Software Geld verdienen ;)
Oder kann ich nicht manche Dateien compiliert veröffentlichen? Oder lässt sich das dann nicht starten?
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.

Gegen Code-Diebstahl hilft eine entsprechende Lizenz mehr als das Verstecken von Code.
Requester
User
Beiträge: 26
Registriert: Samstag 10. Mai 2008, 21:59

Geld verdienen will ich ja gar nicht. :wink:

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. :wink:

Gruß Requester
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Requester hat geschrieben:@pütone: Krieg ich nen Stichwort wonach ich suchen muss? Interessiert mich nämlich auch.
Ich glaube, es war dieser Thread, an den ich mich erinnerte:

http://www.python-forum.de/topic-14526.html

Gelegentlich schweift er mal ab, aber er enthält einige gehaltvolle, nachdenkenswerte Beiträge.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

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.
Frage: Was ist schlimmer:

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. :wink:
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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.
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.

IMHO ist der Abschnitt in der [wiki]FAQ#IchWillAberUnbedingtEinenCompiler[/wiki] darüber auch so nicht richtig:
Sei dir aber bewusst, dass es relativ trivial ist, aus dem Bytecode den Quellcode und die Funktionsweise der Software zu rekonstruieren! (reverse engineering).
Es ist eben aufgrund fehlender Tools nicht trivial.

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]

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Wie wäre es mit decompyle? ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

veers hat geschrieben:Wie wäre es mit decompyle? ;)
Das Tool ist mir neu. Ich kannte nur pyc2py...

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

jens hat geschrieben:
veers hat geschrieben:Wie wäre es mit decompyle? ;)
Das Tool ist mir neu. Ich kannte nur pyc2py...

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
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.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
BlackJack

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". :-)
Benutzeravatar
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]

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
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.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

veers hat geschrieben:...Wäre eigentlich mal ein Projekt die verfügbare Version auf 2.5 Stand zu bringen.
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...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten