pydev autocomplete, unresolved imports, kompilierte Module

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
numpi
User
Beiträge: 4
Registriert: Montag 31. Januar 2011, 16:12

Hallo liebe Schlangenbeschwörer,

ich habe eine Frage zu pydev: Ich muss eine Reihe von Modulen einbinden, die ich nur kompiliert zur Verfügung habe (nur die .pyc files, sonst nix). Bisher habe ich mit idle gearbeitet und hatte dort auch Autovervollständigung zur Verfügung - allerdings mit einer etwas verbastelten idle-Version von einem Kollegen (ich weiß gar nicht ob idle das von Haus aus mitbringt). Kann ich in pydev (eclipse 3.5.1) auch ohne den Quellcode zu haben dieses autocomplete irgendwie erreichen? Wobei mich eigentlich noch viel mehr nervt, dass eclipse ständig undefined-variable-Fehler markiert weil es die Klassen in den eingebundenen Modulen wohl nicht findet (ok, das kann man notfalls aufheben - stört trotzdem). Kompiliert aber alles einwandfrei.

Ich habe die Pfade mit den kompilierten Dateien auch im pydev-PYTHONPATH in den Project-Properties eingetragen.

Kann man überhaupt mit kompilierten Modulen so arbeiten wie ich mir das vorstelle? Kriegt man bei sowas immer diese Fehler? Ich habe bisher immer nur mit eigenem oder quelloffenem zeugs und ohne eclipse gearbeitet.

Danke vorweg und Viele Grüße
Tim

P.S.: Ich hoffe mal das hier ist das richtige Unterforum
lunar

Ich gehe davon aus, dass Pydev dergleichen nicht beherrscht. Zwar ist es nicht unmöglich, sondern eigentlich sogar relativ einfach, kompilierten Bytecode zu analysieren, implementieren muss man es trotzdem. Angesichts dessen, das die Verteilung kompilierter Python-Module eher ungewöhnlich ist, glaube ich nicht, dass Pydev kompilierte Python-Module analysieren kann.
numpi
User
Beiträge: 4
Registriert: Montag 31. Januar 2011, 16:12

Hallo lunar,

danke für die Antwort. Der Autor möchte im konkreten Fall seinen Quellcode nicht herausgeben. Analyse hab ich noch nie gemacht - bisher alles immer nur mit quellcode gehabt. Ich frage mich nur wie das dann in idle funktioniert. Da müssen doch irgendwie die ganzen Klassen- und Variablennamen bekannt gemacht worden sein. Ich nehme mal an es ist eine Erweiterung von idle mit der ich da immer gearbeitet habe. Bisher hatte ich nur keine Zeit mir das mal in Ruhe anzusehen.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Eventuell kannst du ein Modul wie pydoc drüber laufen lassen, oder es von ihm machen lassen, so kennst du zumindest die API. Den Link kannst du ihm dazu gleich mal zeigen http://wiki.python.de/Warum%20ist%20que ... 0b%C3%B6se

Ansonsten kann man den Code auch "einfach" Dekompilieren.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
lunar

@Xynon1: In der Theorie, doch praktisch gibt es kein freies Programm, welches Bytecode von Python 2.4 oder neuer in Python-Quelltext übersetzen kann.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Deswegen "einfach" auch in diesen Anführungsstrichen, aber einfach eine API Dokumentation doch sollte wohl drin sein, oder ?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
numpi
User
Beiträge: 4
Registriert: Montag 31. Januar 2011, 16:12

Danke für die Tipps. Ich habe mal mit einem online-tool (depython.com) testweise eines meiner eigenen module dekompiliert. Das sollte reichen um damit in eclipse arbeiten zu können.

Hat jemand einen Tipp für einen nicht online-basierten Python-Decompiler? Ich bin schon auf einige Tools gestoßen, oft aber nur Disassemblierer - das hilft nicht viel. Und ich möchte ungerne irgendwas hochladen.
lunar

@numpi: Lies meinen letzten Beitrag.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

An der Stelle hätte ich mal eine Frage --> Warum eigentlich?
Es heißt immer wieder Bytekompilierter Code sei recht einfach zu lesen bzw. Rückzuwandeln, aber offensichtlich ist es das nun ja nicht so einfach wie es sich meist anhört. Also meine Frage, was macht es eigentlich so schwer den Pythonbytecode Rückzuwandeln? oder hat sich bisher einfach niemand die Mühe gemacht, das mal sauber in Angriff zu nehmen, einige Ansätze gibt es ja.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
lunar

@Xynon1: Ich gehe davon, dass es bisher noch niemandem die Mühe wert war. Wie oft ist die Rückübersetzung von Python-Bytecode denn schon nötig, oder anders gefragt, wie oft hat man schon den Bytecode ohne den zugehörigen Quelltext?
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Nie :D - bis auf der Fall da oben^^
Dennoch finde ich es Merkwürdig, denn es gibt ja auch Leute die Brainfuck Interpreter schreiben, diese Sprache sogar noch nutzen und sie anderen noch auf die Nase binden :) Also wieso kein Dekompiler für Pythonbytecode(auch für die neuen Pythonversionen) :mrgreen:
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
numpi
User
Beiträge: 4
Registriert: Montag 31. Januar 2011, 16:12

@lunar
Ich hab deinen Beitrag schon verstanden. Da stand kein "freies Programm". Gibt es ein kommerzielles, welches dir bekannt ist und das kann?
Antworten