Compilierte Python Dateien Patchen?

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
Pythonprog
User
Beiträge: 20
Registriert: Donnerstag 19. Januar 2006, 16:41

Hallo,
ich bin neu hier in diesem Forum und habe gleich eine Frage(eigentlich sind es zwei). Ich habe einen Chatbot geschrieben(mein erstes größeres Projekt) und habe diesen Compiliert. Nun habe ich den Chatbot weiterentwickelt mit Tkinter und so. Jetzt würde ich gerne wissen, ob es möglich ist einen Patch zu schreiben, mit dem ich die compilierten Dateien so ändern kann, dass sie der neuen Version entsprechen.
Ich weiss, dass ich auch einfach die neue Version compilieren könnte und die Dateien der alten Version einfach ersetzen könnte aber mich interessiert es immer neue Dinge dazu zu lernen.
Zu meiner zweiten Frage. (Die passt nicht unbedingt zu diesem Titel)
Ich würde gerne in meinen Chatbot so etwas wie eine Lernfunktion einfügen. Das heisst, wenn der Benutzer eine Frage eingibt, die der Chatbot nicht beantworten kann, soll der Chatbot den User nach der Antwort für die Frage fragen und diese Antwort in seine Datenbank schreiben. Ich weiss leider nicht wie ich das machen könnte.
Ich hoffe, das jemand mir vielleicht einwenig helfen könnte!
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Warum willst Du kompilierte Python-Dateien patchen? Hast Du das Programm als Kompilate ausgeliefert? Du weisst, dass das kein sinnvoller Schutz ist um die "sogenannte" Intellectual-Property Deines Programms zu schützen, da Python sich sehr gut dekompilieren lässt (also aus einem .pyc wieder ein .py machen).

Ohne dass ich mich jetzt wieder länger darüber auslasse: warum überhaupt kompilate ausliefern? Warum nicht den Benutzern Quelldateien geben? Ist viel, viel sinnvoller.

Und, ganz davon abgesehen: es ist ein nicht triviales Problem Binärdateien (also Kompilate) zu patchen. Dafür gibts eine ganze Reihe von kommerziellen Tools die diffs zwischen zwei Binärdateien anlegen und auch installieren können, aber selbst programmieren würde ich einfach mal so sagen ist blödsinn.

Zur zweiten Frage: Die ist so allgemein gestellt dass man im Endeffekt keine Antwort drauf geben kann... Wie sieht dein Chatbot aus? Was macht er? Unter welchem Framework läuft er? Wie erkennt er Befehle? etc. etc. etc.

--- Heiko.
Gast

Es ist gar nicht so kompliziert geschrieben und gemacht!
Ich habe das Teil mit py2exe compiliert.
Zum zweiten ist es so:
Er arbeitet mit dem Modul string also
index = string.find(Eingabe, Bedingung)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und warum kannst du nicht einfach eine Diff-Datei ausliefern, die dann als Patch verwendet werden kann? Es sollen Binärdateien sein.. aber warum?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Gast

Ich muss dazu sagen, dass ich mich noch nicht so gut in Python auskenne, das habe ich ja oben schon geschrieben, das das mein erstes größeres Projekt ist. (Ist jetzt aber nicht so das ich nichts weiss) Ich weiss jetzt leider nicht was eine diff-Datei ist. Also es sollte auch nur eine Frage sein, ob so etwas möglich ist und weil ich gerne ein wenig mit neuen Dingen rumexperimentiere bis es klappt.(Soll bedeuten, das es nicht 100% wichtig ist, wenn es nicht so ohne weiteres geht ist es nicht zwingend erforderlich)
Vielleicht könnte ich auch mal einen anderen Thread aufmachen, in dem ich mal die Grundstruktur meines Programmes reinschreibe ( Vielleicht in der Kategorie Projekte vorstellen). Ich habe ja gesagt, das es bestimmt viel zu vereinfachen gibt.
Danke für die Antworten
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Pythonprog hat geschrieben:Jetzt würde ich gerne wissen, ob es möglich ist einen Patch zu schreiben, mit dem ich die compilierten Dateien so ändern kann, dass sie der neuen Version entsprechen.
Hi Pythonprog!

Ich habe es noch nie ausprobiert, aber mit dem Linux-Programm "rdiff" sollte man so etwas machen können. rsync und rdiff-backup verwenden ja auch so ähnliche Verfahren um nur mehr die Deltas zu übertragen.

http://librsync.sourcefrog.net/doc/rdiff.html
http://packages.debian.org/unstable/utils/rdiff
http://www.daemonology.net/bsdiff/
http://developer.berlios.de/projects/diffball/

Ich habe aber nicht unbedingt nach Windows-Tools gesucht. Du brauchst ja ein Programm, das die Dinger auf der Windows-Maschine wieder zusammen setzt.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Diff ist ein Programm welches Änderungen zwischen zwei Dateien feststellt und ausgibt. Diese Unterschiede (differences, deswegen diff) werden in diff-Dateien geschrieben und können dann vom Programm patch auf die alten Daten angewendet werden um daraus dann die neuen Daten zu bekommen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Pythonprog
User
Beiträge: 20
Registriert: Donnerstag 19. Januar 2006, 16:41

Danke, ich werde mir mal die Links genauer anschauen.
Ich bin sicher, dass ich was finden werde.
Also nochmal DANKE
Benutzeravatar
Mr_Snede
User
Beiträge: 387
Registriert: Sonntag 8. Februar 2004, 16:02
Wohnort: D-Dorf, Bo

Habe auch noch einen Link, bei dem diff kurz und knapp beschrieben wird.
http://de.wikipedia.org/wiki/Diff

Ich kann dir empfehlen dein Programm hier vorzustellen - die Hilfen / Anregungen bringen dich weiter als du es selbst geschafft hättest.

cu Sebastian
Gast

Unter Ideen habe ich bereits mein Chatbot Programm geschrieben. Vielen Dank
PS: Viele Anregungen zu meinem Programm sind durchaus erwünscht. Also unter Ideen oder nach Chatbot suchen!
Gast

modelnine hat geschrieben: da Python sich sehr gut dekompilieren lässt (also aus einem .pyc wieder ein .py machen).
Interessant. Mit welchem Tool geht das ?

Seven (der sich gerade nicht einloggen kann)
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

decompyle
Antworten