Entwicklungs-Umgebung Windows / Linux

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
miriki
User
Beiträge: 4
Registriert: Mittwoch 21. Oktober 2015, 16:07

Moinsens!

Ich bin seit kurzem Besitzer eines RaspberryPi und fühle mich (herrlich, einfach herrlich...) wieder ein wenig in 80er, 90er Jahre zurückversetzt, wo ich im DOS und Linux hauptsächlich auf der Kommandozeile unterwegs war, aber eben auch Windows 3 und X-Windows kennenlernte.

Jetzt hängt der RasPi hauptsächlich per Putty ferngesteuert auf meinem Win7-Desktop, kann aber auch im Wohnzimmer am Fernseher mit grafischer Oberfläche glänzen.

Was ich jetzt suche, ist eine IDE, mit der ich unter Win7 in Python programmieren kann. Ich bin neu in der Python-Welt und komme eigentlich aus der Pascal- (Delphi-) und Basic- (VBA und VB.NET) Welt.

Das Ergebnis soll dann sowohl unter DOS / Windows wie auch unter Linux / X-Windows laufen. Ich möchte also unter Win7 ein Programm (sowohl CLI als auch GUI) entwickeln, mit allem Komfort, den eine Windows-IDE bieten kann, dort auch das Programm testen und es dann auf den RasPi übertragen, um es dort endgültig (oder parallel) zu benutzen.

Der Versuch, Python in VisualStudio (Desktop Express 2013) einzubinden, scheitert bislang an "Python Version nicht unterstützt". Die Kombination aus CMD / PowerShell und NotePad++ geht zwar für den Anfang, ist aber meilenweit von einer IDE entfernt. Das "IDLE" kann ich bislang noch nicht als IDE bezeichnen, aber da habe ich vielleicht ja auch nur falsche Vorstellungen.

Der RasPi zur Entwicklung fällt aus. Er läuft nur direkt am Fernseher bei Bedarf mit GUI und dort setz ich mich nicht zum Programmieren hin. Und per SSH mit NANO auf der CL mach ich auch nicht mehr, als unbedingt nötig.

Also: Was könntet ihr mir empfehlen?

Gruß, Michael
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@miriki
Die Frage ist doch, was Du Dir von einer IDE beim Pythonprogrammieren versprichst? Ich benutze IPython als Pythonkonsole auf der einen Seite und einen Editor mit ein wenig Schnickschnack auf der Anderen. Bisher habe ich noch nichts vermisst.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
miriki
User
Beiträge: 4
Registriert: Mittwoch 21. Oktober 2015, 16:07

Moinsens!
mutetella hat geschrieben:was Du Dir von einer IDE beim Pythonprogrammieren versprichst?
Nun, kennst Du die IDE von Microsoft (Visual Studio) oder Borland (Delphi)? Das ist eben ein "Desktop", mit dem alles verwaltet wird, was zu einem Programmier-Projekt gehört. Einige Punkte, die mir am Wichtigstens wären, so aus dem Stegreif:

* Source-Editor mit mehreren Tabs, um verschiedene Module parallel bearbeiten zu können - aber nicht unbedingt alle geöffnet haben zu _müssen_. --> NotePad++ bietet das.

* GUI-Editor zum Erstellen von Formularen über eine Toolbox - Layouts, Label, Textboxen, Buttons, ... Dazu gehört dann auch das "Eigenschaften"-Fenster mit den ganzen Attributen des jeweils ausgewählten Elements - Größe, Position, Farbe, ...

* Projekt-Fenster mit Auflistung der Elemente des Projekts = alle Source-Module und Formulare - einfaches Öffnen des Elements im Editor durch Doppelklick.

* Starten des Programms direkt aus der IDE heraus - kein Herumgeklicke durch die Fenster und Eintippen von Verzeichniswechseln usw.

* Navigation im Source über DropDown-Listen o.ä. - z.B. eine Liste aller definierten Funktionen, um sich Hin- nd Her-Scrollen zu ersparen.

Bonus "Debugging";

* "Breakpoint" setzen im Source, um z.B. IF-Verzweigungen zu prüfen usw.

* "Watch"-Fenster mit Anzeige des Inhalts von (ausgesuchten) Variablen während der Laufzeit - erspart das Fluten der Ausgabe mit Debug-Meldungen

* Und das ganze eben unter einer Oberfläche zusammen gepackt - egal, ob als Container-Fenster mit den ganzen Elementen als Child (VisualStudio), oder als einzelne, dockbare Fenster direkt auf dem Windows-Desktop verteilt (Delphi).

Das wäre schon so ziemlich das Grundlegende.

Gruß, Michael
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

miriki hat geschrieben:* Source-Editor mit mehreren Tabs, um verschiedene Module parallel bearbeiten zu können - aber nicht unbedingt alle geöffnet haben zu _müssen_. --> NotePad++ bietet das.
Das beherrscht jeder halbwegs brauchbare Editor.
miriki hat geschrieben:* GUI-Editor zum Erstellen von Formularen über eine Toolbox - Layouts, Label, Textboxen, Buttons, ... Dazu gehört dann auch das "Eigenschaften"-Fenster mit den ganzen Attributen des jeweils ausgewählten Elements - Größe, Position, Farbe, ...
Das hat ja erstmal nichts mit Python selbst zu tun, sondern mit dem jeweiligen Framework, das man für seine GUI verwendet. Und da gibt es verschiedene Möglichkeiten (Qt-Designer etc.), über die Dir andere mehr erzählen können. Dafür bin ich zu textlastig... ;-)
miriki hat geschrieben:* Projekt-Fenster mit Auflistung der Elemente des Projekts = alle Source-Module und Formulare - einfaches Öffnen des Elements im Editor durch Doppelklick.
miriki hat geschrieben:* Starten des Programms direkt aus der IDE heraus - kein Herumgeklicke durch die Fenster und Eintippen von Verzeichniswechseln usw.
miriki hat geschrieben:* Navigation im Source über DropDown-Listen o.ä. - z.B. eine Liste aller definierten Funktionen, um sich Hin- nd Her-Scrollen zu ersparen.
Auch sowas ist (gegebenfalls über Plugins) in jedem modernen Editor kaum ein Problem.
miriki hat geschrieben:* "Breakpoint" setzen im Source, um z.B. IF-Verzweigungen zu prüfen usw.
miriki hat geschrieben:* "Watch"-Fenster mit Anzeige des Inhalts von (ausgesuchten) Variablen während der Laufzeit - erspart das Fluten der Ausgabe mit Debug-Meldungen
Für sowas verwende ich pdb. Ob es was ähnliches auch mit grafischer Oberfläche gibt, weiß ich nicht. Aber Programmieren ist ja erstmal Text... ;-)

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
miriki
User
Beiträge: 4
Registriert: Mittwoch 21. Oktober 2015, 16:07

Moinsens!
mutetella hat geschrieben:Das beherrscht jeder halbwegs brauchbare Editor.
Ich schrieb ja auch, daß NotePad++ das duchaus kann. Aber darum geht's ja gerade nicht...

Deswegen wollte ich eigentlich auch zunächst gar nicht die einzelnen Punkte, die mir wichtig wären, aufzählen. Denn ich hatte schon gedacht, daß dann sowas passiert: Jeder Punkt wird einzeln betrachtet und mit "das kann xxx" beantwortet. Dabei wird aber der o.a. Betreff des Threads und der in meinem Posting wichtigste Punkt gerne vergessen:
* Und das ganze eben unter einer Oberfläche zusammen gepackt - egal, ob als Container-Fenster mit den ganzen Elementen als Child (VisualStudio), oder als einzelne, dockbare Fenster direkt auf dem Windows-Desktop verteilt (Delphi).
Und ein Sammelsurium aus NotePad++, QT-Designer, pdb und was-weiß-ich-nicht-noch-alles lose zusammen geheftet mit einer PowerShell und selbst gebastelten Batches ist so ziemlich das Gegenteil von dem, was ich unter einer IDE verstehe. Für irgendwas muß das "I" da drin doch gut sein... ;-)

Was verschiedene Frameworks betrifft: VisualStudio unterstützt z.B. beim Anlegen des Projekts direkt die Auswahl, z.B. "Windows Form" oder "WPF Anwendung" usw. Und für mich war ja wichtig, daß das Endergebnis sowohl unter Windows 7 als auch unter X-Windows läuft. Habe ich da überhaupt eine Wahl? Oder bin ich da auf wxPython eingeschränkt? (Kenne mich damit noch nicht aus, hab bislang kaum mehr als Überschriften und Betreffs gelesen.)

Gruß, Michael
BlackJack

@miriki: Tk, Qt, Gtk, und wxPython sind alle Cross-Plattform. IPython ein guter Editor wird von nicht wenigen Python-Programmierern anstelle einer IDE verwendet. So „integrated“ wie Du das von Delphi oder VB gewohnt bist geht in Python nicht, beziehungsweise will man das auch gar nicht. Warum den GUI-Designer nicht extra? Eine wirkliche Verbindung gibt's da ja nicht. Der GUI-Designer schreibt eine Datendatei die man im Programm dann zur Laufzeit lädt. Das verbinden von GUI und Code muss man bei allen gängigen Rahmenwerken eh von Hand machen. Hat den Vorteil das man Programmlogik und GUI-Code sauberer trennen kann als viele das machen wenn alles IDE auch irgendwie eins ist.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Schau dir mal Eric Python IDE, Spyder, PyCharm oder WingIDE an.

Ich finde alle Programme gut, habe alle mal ein paar Tage vollzeit verwendet, benutze aber keins davon ;-)

Ich benutze Geany und iPython.
miriki
User
Beiträge: 4
Registriert: Mittwoch 21. Oktober 2015, 16:07

Moinsens!
BlackJack hat geschrieben:sind alle Cross-Plattform.
Ah, ok, gut zu wissen. Mit Qt hatte ich vor langer, langer Zeit mal zu tun, erinnere ich mich dunkel (SuSE 5er Distri so in der Gegend). Aber da ich erstmal nur mit CLI anfangen werde, hab ich da ja noch etwas Zeit, mir was sympathisches auszusuchen demnach.
IPython ein guter Editor wird von nicht wenigen Python-Programmierern anstelle einer IDE verwendet.
Ok, dann hab ich einen Namen. Den kann ich mir ja mal ansehen. Vielleicht ist der ja, mehr als der NotePad++, eine "quasi" IDE.

Ich meine, ich hatte mir damals unter Linux mit dem MidnightCommander und dem User-Menü sowas wie eine IDE gestrickt, parallel im DOS das gleiche mit dem VolkovCommander. Vielleicht krieg ich das ja auch wieder hin.
So „integrated“ wie Du das von Delphi oder VB gewohnt bist geht in Python nicht
Schade, daß sich demnach in den letzten 20 Jahren also nicht wirklich was getan hat in der Richtung. Von Kylix hatte ich mir damals ein bißchen was versprochen, aber dann hatte ich mich eh weitestgehend von Linux verabschiedet.
Der GUI-Designer schreibt eine Datendatei die man im Programm dann zur Laufzeit lädt. Das verbinden von GUI und Code muss man bei allen gängigen Rahmenwerken eh von Hand machen.
Aha, ok... Also ähnlich wie bei der JAVA-Programmierung unter Android? Dort bastelt man sich dann ein XML mit dem Layout und den Widgets, parallel dazu den JAVA-Source mit den Events. Und zur Laufzeit verbindet man dann die Widgets mit den Events.

Schade, denn ich finde das Formular mit dem direkt verbundenen Code-Modul eigentlich durchaus sehr praktisch. Letztendlich erzeugt der GUI-Designer dann ja auch nur Standard-Code, den man dann mit Leben füllt. Es erspart eben nur etliches an Tipparbeit und vermeidet Fehler.

Aber wenn's nicht so ist, muß ich eben damit leben.

Gruß, Michael
BlackJack

@miriki: Ups, da fehlt ein „und“ nach „IPython“. Das ist kein Editor sondern eine interaktive Python-Shell mit etwas mehr Funktionalität als die Standard-Python-Shell. Und verschiedenen Front-Ends (Konsole, GUI, Web).

Im Grunde hat sich schon etwas getan in der Richtung: Alle haben sich von so etwas wegbewegt. ;-)
Astorek
User
Beiträge: 72
Registriert: Samstag 24. Januar 2009, 15:06
Kontaktdaten:

miriki hat geschrieben:Aha, ok... Also ähnlich wie bei der JAVA-Programmierung unter Android? Dort bastelt man sich dann ein XML mit dem Layout und den Widgets, parallel dazu den JAVA-Source mit den Events. Und zur Laufzeit verbindet man dann die Widgets mit den Events.

Schade, denn ich finde das Formular mit dem direkt verbundenen Code-Modul eigentlich durchaus sehr praktisch. Letztendlich erzeugt der GUI-Designer dann ja auch nur Standard-Code, den man dann mit Leben füllt.
Würde ich so nicht sagen, immerhin wird dem MVC-Modell damit Genüge getan. So kannst du bei sinnvoller Trennung zwischen GUI und Datenstruktur jederzeit eins von beiden verändern, ohne dass das Andere davon beeinträchtigt wird.

Du kannst ja jederzeit in einem anderen Quelltext die GUI laden und dann die GUI-Elemente an eigene Methoden und Funktionen verweisen. Soo viel Mehraufwand ist das nicht... Aber man gewinnt Flexibilität, wenn man im laufenden Projekt plötzlich feststellen muss, dass man die GUI eigentlich doch ganz anders aufbauen möchte. Das ist dann möglich, ohne an den Datenstrukturen selbst rütteln zu müssen... Das geht ja soweit, dass selbst das komplette GUI-Framework ausgetauscht werden kann, abermals ohne Änderungen an den Datenstrukturen oder dem Event-System vornehmen zu müssen. Ich für meinen Teil hab damit endlich verstanden, weshalb so viele Programmierer OOP gegenüber prozeduraler Programmierung vorziehen^^. (Und eine Erleichterung ist es auch, wenn man z.B. eine speziell für Programmierer geschriebene GUI hernehmen will, weil man z.B. das Programm debuggen möchte: Abermals von der GUI-Klasse erben und die Methoden einfügen u. bearbeiten, die sich ändern sollen. Der Rest soll sich wie bisher verhalten und muss dementsprechend nicht nochmal neu implementiert werden, weil die Methoden in der "geerbten" Klasse ja schon existieren. Tut mir leid dass ich das so ausschweifend kommentiere, aber wenn man so eine Situation nur einmal erlebt hat, möchte man MVC in GUI-Programmen nichtmehr missen, das ist es was ich sagen wollte^^.)

Speziell beim Qt-Designer ist es auch möglich, benutzerdefinierte Methoden schon in der GUI festzulegen, was das Ganze sogar noch einfacher macht: In einem neuen Quellcode erbst du einfach von der GUI-Klasse und implementierst die Methoden, die du schon im Qt-Designer vorgegeben hast.

-
Zum Thema selbst wurden ja schon einige Vorschläge genannt. Ich pers. bin mit Eric6 ganz zufrieden, läuft unter Windows wie Linux. Das Ding bindet auch (lose) den Qt-Designer ein. Nachteil: Die Konfiguration kann einem erstmal erschlagen (ist aber gerade noch im Rahmen des Erträglichen) und die Voreinstellungen nicht immer optimal (aus irgendeinem Grund hielt es der Entwickler für eine gute Idee, Autocompletion per Voreinstellung auszuschalten); ich für meinen Teil habs einmal konfiguriert und möchte es mittlerweile nichtmehr missen.

Früher war ich auch Fan von Stani's Python Editor (eine bessere Autocompletion in Python kenne ich nicht), leider wird das Ding seit Jahren nichtmehr weiterentwickelt und hat mit z.T. wirklich nervigen Bugs zu kämpfen.

Wenn du Java-Erfahrungen hast, nehme ich an, dass du auch Eclipse kennst. Für Eclipse gibts auch ein Plugin, damit es Python versteht... Ich glaube es hieß PyDev...
Antworten