Wie kann man Pythonprogramme starten, ohne Python zu install

Fragen zu Tkinter.
Himalius
User
Beiträge: 10
Registriert: Freitag 2. Mai 2008, 15:34
Wohnort: Irgendwo im Nirgendwo
Kontaktdaten:

wie schon gesagt, Wie kann man Pythonprogramme starten, ohne Python zu installieren?
wenn einer darauf eine antwort weiß, bitte antworten.
freue mich auf hilfe und bedanke mich als im voraus.

MfG Himalius
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Bambie
User
Beiträge: 15
Registriert: Mittwoch 26. März 2008, 01:09

Dazu habe ich noch zwei Fragen:
Gibts eigentlich dabei eine Möglichkeiten, soetwas in eine Datei zu packen? Also, dass man anstatt die ganzen DLL-Dateien und sowas in nem Ordner, alles in einer kleinen kompakten Datei?

Und kann man diese Exen wieder decompilieren?

MFG Bambie
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Bambie hat geschrieben:Dazu habe ich noch zwei Fragen:
Gibts eigentlich dabei eine Möglichkeiten, soetwas in eine Datei zu packen?
Ja, siehe im Beispiel Ordner von py2exe singleexecutable.
Bambie hat geschrieben:Und kann man diese Exen wieder decompilieren?
Ich glaube py2exe nutzt die Bytecode Datein, also ist der Quellcode nicht sofort heraus zu bekommen. Bin mir aber nicht sicher ob py2exe nicht auch die py Datein einsetzt.
Himalius
User
Beiträge: 10
Registriert: Freitag 2. Mai 2008, 15:34
Wohnort: Irgendwo im Nirgendwo
Kontaktdaten:

ok, danke erst ma.
ich werd ma reinschauen.
Himalius
User
Beiträge: 10
Registriert: Freitag 2. Mai 2008, 15:34
Wohnort: Irgendwo im Nirgendwo
Kontaktdaten:

ich hab das ma ausprobiert, aber es klappt nitt.
könnt sein, dass ich das falsch verstanden hab.
könnts mir vllt einer so erklären?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Für meinen Geschmack machst du es dir zu einfach und lässt - nicht nur in diesem Thread - andere die Arbeit machen, die du dir auch selbst machen könntest. Ist dann eben etwas anstrengender für dich.

Wirf z.B. mal einen Blick in die letzten Threads unter "Allgemeines" und du solltest fündig werden.
Himalius
User
Beiträge: 10
Registriert: Freitag 2. Mai 2008, 15:34
Wohnort: Irgendwo im Nirgendwo
Kontaktdaten:

achso, ok mach ich.
tschuldige das ich noch mal nachgefragt hab, aber ich kann leider gottes nich so gut englisch, ausserdem klappt das nitt bei mir, wenn ich das so machen, wie ich das verstanden hab.

danke nochmals
Himalius
lunar

Sr4l hat geschrieben:
Bambie hat geschrieben:Und kann man diese Exen wieder decompilieren?
Ich glaube py2exe nutzt die Bytecode Datein, also ist der Quellcode nicht sofort heraus zu bekommen. Bin mir aber nicht sicher ob py2exe nicht auch die py Datein einsetzt.
Der Ehrlichkeit halber möchte ich an dieser Stelle allerdings darauf hinweisen, dass das Rückübersetzen von Python Bytecode nur ein unwesentliches Hindernis auf dem Weg zur Gewinnung des Quellcodes darstellt.

Man sollte nicht der Fehleinschätzung unterliegen, Bytecode wäre ähnlich nativem Code, wie in beispielsweise der gcc erzeugt. Bytecode bewegt sich auf wesentlich höherem Abstraktionsniveau und ist in der Regel mehr oder weniger trivial rück zu übersetzen, während man nativen Code allenfalls disassemblieren, allerdings kaum rückübersetzen kann.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

lunar hat geschrieben:
Sr4l hat geschrieben:
Bambie hat geschrieben:Und kann man diese Exen wieder decompilieren?
Ich glaube py2exe nutzt die Bytecode Datein, also ist der Quellcode nicht sofort heraus zu bekommen. Bin mir aber nicht sicher ob py2exe nicht auch die py Datein einsetzt.
Der Ehrlichkeit halber möchte ich an dieser Stelle allerdings darauf hinweisen, dass das Rückübersetzen von Python Bytecode nur ein unwesentliches Hindernis auf dem Weg zur Gewinnung des Quellcodes darstellt.

Man sollte nicht der Fehleinschätzung unterliegen, Bytecode wäre ähnlich nativem Code, wie in beispielsweise der gcc erzeugt. Bytecode bewegt sich auf wesentlich höherem Abstraktionsniveau und ist in der Regel mehr oder weniger trivial rück zu übersetzen, während man nativen Code allenfalls disassemblieren, allerdings kaum rückübersetzen kann.
Es gab mal eine Seite die eine Übersetzung von pyc zu py im "Angebot" hatte, das sollte für Python 2.3 funktionieren. Ich habe es aber nie testen können, mit meinen Python 2.4 pyc's hat es nicht funktioniert und ich war zu faul Python 2.3 zu installieren :-).
AlArenal
User
Beiträge: 23
Registriert: Sonntag 27. April 2008, 00:53
Wohnort: Iserlohn
Kontaktdaten:

Dererlei Fragen und Diskussionen gibt es seit jeher auch bei Java und mittlerweile sicher auch in der .NET Welt (so man nicht nativ kompiliert). M.E. machen sich in der Regel die falschen Leute Gedanken darüber, wie sie ihren Code schützen können und vergessen dabei mal zu überlegen, ob ihr Produkt nun so bahnbrechend interessant ist, sich als Cracker die Arbeit zu machen.

Mit dererlei Maßnahmen investiert man wertvolle Enticklungszeit an der falschen Stelle. Wenn es wirklich einer auf den Code abgesehen hat, findet er einen Weg. Nun kann ich mir überlegen ob es den Aufwand wert ist für diesen unwahrscheinlichen Fall Maßnahmen zu treffen, die am Ende eh nicht greifen, oder ob ich einfach damit lebe und die Zeit lieber verwende das Produkt für die Benutzer (das sind die, die wirklich mit dem Ding arbeiten und denen es was bedeutet) komfortabler zu machen.
"Ein schwarzes Loch hat keine Haare" - John A. Wheeler
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

richtig!
und zudem:
wer ein programm schreiben will, was man nicht (ohne weiteres) zurückkompilieren kann, der sollte sich dafür keine opensouresprache aussuchen, sondern sich ein cpp- oder assemblerbuch, ein wenig zeit und einen netten tee dazu nehmen. aller anfang ist schwer, aber wer sicherheit will..........
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Hannes-Spz hat geschrieben:richtig!
und zudem:
wer ein programm schreiben will, was man nicht (ohne weiteres) zurückkompilieren kann, der sollte sich dafür keine opensouresprache aussuchen, sondern sich ein cpp- oder assemblerbuch, ein wenig zeit und einen netten tee dazu nehmen. aller anfang ist schwer, aber wer sicherheit will..........
Wie kann denn eine *Sprache* Opensource sein? Und weshalb soll das C++ dann nicht sein?

Und seit wann ist C++/ASM Code sicher vor den Augen anderer?

Ansonsten kann ich nur sagen, der Aufwand die Funktionalität eines Programmes zu verstecken wollen macht nur Sinn wenn das Programm nicht im sinne des Benutzers handelt - Viren, DRM, ...
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

Wie kann denn eine *Sprache* Opensource sein?
die sprache selbst ist weniger opensource - da der quellcode nur teilweise ohne weiteres direkt vom endbenutzer auszulesen ist.
das ist auch mein kriterium für opensource (hauptsächlich)
demnach kann man "opensourcesprache" als neologismus betrachten, der verdeutlicht, dass mit dieser sprache nahezu nur opensourceprojekte erstellt werden.
Und weshalb soll das C++ dann nicht sein?
weil c++ eine kompilersprache ist.
dabei wird der code in maschinensprache übersetzt, die man maximal disassemblieren kann, demnach ist das resultat aber in assembler (esseidenn mit extratools aber davon sehen wir jetzt mal ab).
für genaueres musst du nachgooglen.
jedenfalls: wenn du ein projekt zu einer exe kompilierst, dann hast du bytecode - er ist also nicht mehr "open", da man ihn nicht ohne weiteres auslesen und umschreiben kann
Und seit wann ist C++/ASM Code sicher vor den Augen anderer?
C++code ist natürlich einsehbar - aber wie schon geschrieben, geben viele ihren c++code nur in exe, dll, obj oä weiter - also in bytecode und die disassemblierung und der asmcode hat den nachteil, dass nahezu niemand asm kann (nicht ausreichend)
deshalb können nur zuwenige damit etwas anfangen (ich gehe immer davon aus, dass man das programm umschreiben will ! )
wenn das Programm nicht im sinne des Benutzers handelt - Viren, DRM,...
naja - es gibt ja auch noch die beliebte softwarepiraterie bzw. (was du wahrscheinlich schon inbegriffen hast) software, die zu wenige tools vereinigt und man sie erweitern möchte - oder zum beispiel die kopierschutzsicherung eines brennprogramms - oä - ka - wann macht man ein programm sicher? wenn es wertvoll ist - man also evtl dafür geld bekommt, wenn man aber den code hat, könnte man die 30 minuten frist ausstellen.... sowas in der richtung meine ich (nicht ZWINGEND cracken, sondern auch umstellen von komponenten und algorithmen herausfinden, weil sie als gut erscheinen)

wenn du damit auf etwas anderes abgezielt hast oder ich was falsches geschrieben habe - ich bin offen für neues

danke im voraus?
lg hannes
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Himalius hat geschrieben:wie schon gesagt, Wie kann man Pythonprogramme starten, ohne Python zu installieren?
Mir ist gerade danach, den Mac-User heraushängen zu lassen und daher zu antworten: Indem man kein Windows sondern OS/X 10.5.2 benutzt. Da ist Python 2.5.1 nämlich vorinstalliert ;) Macht vieles einfacher. Bei Ubuntu Linux wäre es übrigens ähnlich. Offensichtlich nur ein Problem der Windows-Minderheit :)

Auch das mit der einen Datei löst OS X sehr elegant. Anwendungen sind eigentlich Verzeichnisse, werden aber vom File Explorer des Mac (Finder genannt) immer wie eine Anwendung dargestellt und können daher einfach verschoben oder kopiert werden. Irgendwas zu kompilieren ist daher nicht nötig.

Einen Schutz gegen neugierige Blicke bietet das natürlich nicht, aber das es bei Python prinzipbedingt nicht möglich ist, das Wiederherstellen eines äquivalenten Quelltextes zu verhindern, wurde schon gesagt. Wenn man eh den eigenen Python-Interpreter mitliefern will, könnte es helfen, die Bytecodes zu permutieren, sodass man erst durch eine Häufigkeitsanalyse herausfinden kann, was wohl was ist und nicht einfach nachgucken kann. Auch könnte man das marshal-Format ändern. Um dann herauszufinden, wie das funktioniert, müsste man erst weit genug in den speziellen Python-Interpreter hineindebuggen. Oh, bei dieser Gelegenheit sollte man natürlich auch verhindern, dass man in der interaktiven Kommandozeile Code ausführen kann, denn andernfalls kann ich eine "known plaintext"-Attacke fahren und gucken, wie bestimmter Quelltext übersetzt wird. Also auf `exec`und `eval` verzichten und den Compiler ausbauen. Ob derartige Umbaumaßnahmen am Interpreter sich lohnen... muss jeder selbst wissen. Für ein Java-Programm hatte ich mal über entsprechende Strategien nachgedacht, der Aufwand rechtfertigte dann jedoch nicht die erwarteten Verluste durch Raubkopien.

Übrigens, wenn man nur will, kann man auch nativen Code recht gut zurückübersetzen. Anfang der 90er hatte ich Teile des Amiga-ROMs von 68k Assembler in C zurückübersetzt, weil ich wissen wollte, das UI funktionierte. Der C-Compiler war offenbar recht primitiv, man konnte Muster erkennen, die sich gut zurückübersetzen liesen.

Oh, und um eine kleine Lanze für DRM zu brechen: Wenn man's als "chain of trust" versteht, dann kann das sehr wohl im Sinne des Benutzers sein, wenn sichergestellt werden soll, dass Programme unverändert sind und von dem kommen, von dem man das glaubt. Meist ist es da ja, dass die Programme aus Sicht des Benutzers nicht genug machen - etwa nicht das Kopieren von Musik erlauben, sondern nur das Abspielen. Hier ist es aber normalerweise nicht "obscurity", das Code schützt, sondern andere kryptografische Maßnahmen, die irgendwie bis zur Hardware gehen müssen. Man schaue sich z.B. an, wie die XBox 360 das macht.

Übrigens: GCC ist doch auch Opensource. Das war ein komisches Argument von "Hannes-Spz". Entscheidend ist eher, wie abstrakt der von der Sprache erzeugte Zwischencode ist - falls es überhaupt einen gibt. JavaScript z.B. ist immer Quelltext.

Mein Tipp wäre eher Haskell oder OCaml in Maschinencode kompilieren. Die Sprachmuster, die dort ein guter Compiler erzeugt, sind nur einer Minderheit vertraut und deutlich komplexer und somit schwerer zurückzuübersetzen. Oder man wählt eine Sprache, wo auch schon am Quelltext die Mehrzahl der Entwickler scheitert - z.B. CommonLisp oder Smalltalk :)

Stefan
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

Übrigens: GCC ist doch auch Opensource. Das war ein komisches Argument von "Hannes-Spz".
:oops: /ubuntuuser
total verdrängt - ja - hab davon gehört, dass er auch opensource ausspuckt.
aber soweit ich das von M$win kenne, kommt bei einer .obj, .exe oder .dll immer nur unleserlicher bytecode raus - egal wie bekannt oder durchsichtig die routinen des compilers sind - man kann es nicht ohne weiteres umschreiben - nur mit u.a. von dir genannten methoden...
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hannes-Spz hat geschrieben:total verdrängt - ja - hab davon gehört, dass er auch opensource ausspuckt.
Hu? Also der GCC produziert nicht opensource sondern nativen Code, der von der betreffenden CPU ausgeführt werden kann, nicht irgendwelchen Bytecode. Microsofts C++ Compiler macht das nicht anders.

Und das Lisp schwer zu lesen ist (mir schon klar dass das scherzhaft gemeint ist), finde ich gar nicht mehr so sehr als wie noch vor 2 Jahren. In der Regel ist er ja eingerückt (und wenn nicht kann man ihn einrücken lassen, was bei Python so nicht möglich ist) und ein Editor highlightet die einzelnen S-Expressions auch entsprechend. Da gibt es durchaus Konstrukte in Scala oder Haskell deren Funktionsweise schwerer intuitiv zu ergründen sind. Ist natürlich meine Meinung, YMMV.
Zuletzt geändert von Leonidas am Sonntag 11. Mai 2008, 04:54, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

@Hannes-Spz: Lies dir doch bitte einfach mal den Wikipedia-Artikel zu Open Source durch. Es ist zwar toll, dass du deine eigene Definition hast, aber die stimmt nicht so richtig mit dem allgemeinen Sprachgebrauch überein.
Benutzeravatar
Hannes-Spz
User
Beiträge: 123
Registriert: Sonntag 7. August 2005, 22:42

@EyDu:
hm, du meinst:
die sprache selbst ist weniger opensource - da der quellcode nur teilweise ohne weiteres direkt vom endbenutzer auszulesen ist.
das ist auch mein kriterium für opensource (hauptsächlich)
hab ich recht?
nun, ich hab mir den artikel angeschaut:
Die Software (d. h. der Quelltext) liegt in einer für den Menschen lesbaren und verständlichen Form vor
Die Software darf beliebig kopiert, verbreitet und genutzt werden
Die Software darf verändert und in der veränderten Form weitergegeben werden
punkt 1:
wenn es nicht gerade pyc dateien sind, so sind sie lesbar nach der definietion
punkt 2 und punkt 3:
das ist in python kein problem, ob man es darf - nungut - wie viele leute haben sich photoshop wirklich gekauft? wieviele aber haben die vollversion? es ist bei solchen projekten sicherlich schwer, sie zu vervielfachen oder zu verbreiten und noch schwerer, sie zu verändern, wohingegen es in python unter o.g. bedingung ein kinderspiel ist.
aber es geht ja nicht darum, dass es nur einfach ist, es geht um die erlaubnis. doch vorher muss ich nochmal auf meine zuvor geäußerte meinung zurückkommen - "wer sicherheit will, muss was dafür tun" - siehe: man soll gar nicht erst python verwenden, wenn man seinen quellcode nicht preisgeben will. aber selbstschuld ist hier auch nicht am rechten platz - ich glaube schon gesehen zu haben, dass jemand sein py-script rechtlich geschützt hat, aber das muss ja nichts heißen:

@leonidas:
sry - fehlinformation oder zustand geistiger umnachtung, vielleicht habe ich es damals nicht richtig kompilliert, jedoch bin ich mir sicher, dass ich das produkt ohne besondere umstände lesen konnte...
//Edit: (mir ist aber aufgefallen, dass ich noch nicht fest im unterscheiden von bytecode und nativem code bin... falls es einen unterschied gibt :shock: aber rechnet mir das jetzt bitte nicht als grund an, mich zu kritisieren - es geht um etwas anderes)
verzeihung für die fehlinformation.

dennoch @ehdu:
ich wüsste nicht, warum du mich auf die seite verwiesen hast, da ich doch klar und deutlich geschrieben habe, dass dies nur mein hauptkriterium ist - und wie geschrieben, ist es einfach, eine py zu verändern, zu kopieren und zu verbreiten - dafür ist es python
und vielleicht nochetwas:
vielleicht habe ich das wieder mal falsch verstanden:
Wikipedia-OSD hat geschrieben: Die OSD-Ziff. 8 besagt, dass die gewährten Rechte nicht davon abhängig gemacht werden dürfen, dass das Programm Teil einer bestimmten Distribution ist. Es muss frei bleiben, auch wenn es von dieser Distribution getrennt wird.
und
Wikipedia-OSD: OSI-zertifizierte Lizenzen hat geschrieben:Python-Lizenz ([8]),
ich denke, dass man hier gerichtlich eine chance hat, sich aus der raubkopierangelegenheit rauszureden, wenn man den code von einem python-anfänger klaut :wink:

nehmts nicht persönlich - ich versteh nur nicht, warum ich darauf verwiesen wurde (bzw. warum ich damals meien code noch lesen konnte oO aber ich glaube, dass ich das nie mehr erfahren werde)

danke für folgende antworten und vergangende berichtigungen
liebe grüße
hannes
[size=85]"Unsere Situation ist immer die eines schwarzen Mannes der in einem schwarzen Keller einen schwarzen Hut sucht, den es vielleicht gar nicht gibt." Sir Karl R. Popper[/size]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich habe jetzt eigentlich keine Zeit auf alle deine Argumente einzugehen, denn ich habe eine lange, sogar durchaus produktive Nacht mit JavaScript und mootools hinter mir aber eine Sache wäre herauszustellen:

Die Python-Lizenz (PSF-Lizenz) ist nur die Lizenz unter der der CPython-Interpreter steht, wie Python-Code überhaupt lizensiert wird, steht den Autoren frei. Die können es unter die MIT-Lizenz stellen, unter GPL oder auch unter eine propietäre Lizenz. Nicht aber unter die PSFL, die ist nämlich nicht wiederverwendbar. Sie wiederzuverwenden ist auch sinnlos, stattdessen würde ich eher zur Apache License raten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten