[[Vorlage(Getestet, bionic, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal verwenden] }}} [[Inhaltsverzeichnis()]] [[Bild(mu_icon.png, align=left)]] [http://codewith.mu/ Mu] {en} (gesprochen: „Mü“) ist ein [:Editoren:Editor], der speziell und ausschließlich für die Programmiersprache [:Python:Python 3] entwickelt wird. Das Programm gibt es neben Linux auch für Mac OS X und Windows. Mu bezeichnet sich zwar selber als Editor, aber es sind auch einige (grundlegende) Merkmale einer IDE enthalten. Der Editor hat eine sehr übersichtliche Oberfläche, die nur aus eine Icon-Leiste besteht, es gibt keine weiteren Menüs. Die Besonderheit von Mu ist, dass der Editor vier verschiedene Modi kennt, jeweils optimiert für eine bestimmt Aufgabe. Weitere Merkmale des Editors sind: * Syntaxhervorhebung * Autovervollständigen * Information zu Befehlen / Funktionen / Klassen anzeigen * Starten / Stoppen von Programmen * Debugging Modus mit schrittweisem Debugging und der Möglichkeit, die Tiefer der Debugging-Ebene zu wählen * einblendbare Kommandozeile ("REPL" = "Read-Evaluate-Print-Loop") * eingebaute Plotfunktion * deutschsprachige Oberfläche = Installation = == aus den Paketquellen == Ab Ubuntu 19.04 ist das Programm in den Paketquellen enthalten, allerdings nicht unbedingt in der aktuellen Version:[1] {{{#!vorlage Paketinstallation mu-editor, universe }}} == via pip == Die aktuelle, stabile Version des Editors kann man via [:pip:] installieren[2]: {{{#!vorlage Befehl pip3 install mu-editor }}} [[Vorlage(Fremd, Software)]] = Benutzung = [[Bild(mu_1.png, 300, align=right)]] Der Editor wird über die Eingabe von {{{#!vorlage Befehl mu-editor }}} gestartet[2]. Die Oberfläche des Editors ist sehr übersichtlich. Es gibt keine Menüs, alle Funktionen sind direkt über die Schaltflächen in der Werkzeugleiste oberhalb des Eingabebereichs des Editors erreichbar. Deren Beschriftung ist eindeutig und selbsterklärend. Mu unterstützt Tabs, d.h. es können mehrere Skripte gleichzeitig geöffnet sein. Ein Klick auf ''"Neu"'' öffnet einen neuen Tab, in den man dann Python-Code eingegeben oder über ''"Laden"'' ein existierendes Skript einlesen kann. Mittels ''"Prüfen"'' wird der Pythoncode auf Fehler geprüft. Ein Klick auf ''"Ausführen"'' lässt den Pythoncode laufen, mögliche Ausgaben erscheinen in eine extra Bereich innerhalb des Editorfensters. Ein Klick auf ''"Stopp"'' beendet die Ausführung des Programms. Möchte man den Debugger nutzen, klickt man auf ''"Debuggen"''. An der rechten Seite des Fensters öffnet sich ein Bereich Namens ''"Debugging Inspector"'', in dem die Werte der Variablen des Programms angezeigt werden. Um das Programm schrittweise durchzugehen, klickt man auf die Schaltfläche ''"Überspringen"'', um die nächste Codezeile auszuführen. Ist man in einer Programmzeile, in der eine Funktion / Methode aus einem importieren Modul ausgeführt wird, öffnet ein Klick auf ''"Schritt hinein"'' den Code des Moduls in einem neuen Tab. Speichert man Programmcode, wird dieser im Ordner '''~/mu_code/''' im [:Homeverzeichnis:] des jeweiligen Benutzers abgelegt. Einen interaktiven Python-Interpreter öffnet man im unteren Teil des Editorfensters über einen Klick auf ''"REPL"''. Diese basiert auf [https://ipython.org/ IPython] {en} und unterstützt alle dessen Funktionen. [[Bild(mu_2.png, 300, align="right")]] == Daten plotten == Mu kann Daten automatisch als Liniendiagramm plotten. Dazu muss zum einem die Schaltfläche ''"Plotter"'' mit einem Klick aktiviert werden, zum anderen muss das laufende Programm Daten mit `print` als [https://docs.python.org/3/library/stdtypes.html#tuple Tupel] {en} ausgegeben werden. Für jeden Wert im Tupel wird eine eigene Linie gezeichnet, die Skalierung der Y-Achse erfolgt automatisch anhand der Werte im Tupel. Ein weiterer Klick auf ''"Plotter''" beendet die grafische Ausgabe. == Modus wechseln == Mu kennt für verschiedene Modi, für verschiedene Programmierszenarien. In Abhängigkeit des gewählten Modus ändern sich die Schaltfläche in der Menüleiste. Mit einem Klick auf ''"Modus"'' kann man den Modus umstellen, in Tabs geöffnete Skripte werden davon nicht beeinflusst. Die Modi sind: * ''"Python 3"'': der Standard-Modus zum Programmieren von Python-Skripten. Hier steht der oben beschrieben Debugger zur Verfügung. * ''"Adafruit CircuitPython"'': dient zum Programmieren von [https://www.adafruit.com/circuitpython Adafruit] {en} Microcontrollern mit [https://github.com/adafruit/circuitpython CircuitPython] {en}. In diesem Modus könnte Skripte direkt auf dem Microcontroller geladen und ausgeführt werden. Außerdem kann man eine serielle Verbindung zum Microcontroller öffnen sowie den REPL von CircuitPython ausführen und nutzen. * ''BBC micro:bit"'': dient zum Programmieren des [https://microbit.org/ BBC micro:bit] {en} Mikrocontrollers mit Hilfe von [https://micropython.org/ MicroPython] {en}. In diesem Modus können Skripte direkt auf den BBc micro:bit übertragen werden. Über die Schaltfläche ''"Dateien"'' kann man auf Dateien zugreifen, die auf dem Microcontroller abgelegt sind und man kann ebenfalls den MicroPython REPL auf dem micro:bit ausführen und nutzen. * ''"Pygame Zero''": Modus zum Erstellen vom Spielen mit Hilfe von [https://pygame-zero.readthedocs.io/en/stable/ pygamezero]. Ein fertig programmiertes Spiel kann über eine Klick auf ''"Spielen"'' gestartet werden, außerdem gibt es Menüpunkte für den schnellen Zugriff auf Bilder, Musik, Geräusche und Schriftarten. = Problembehebung = == Fehlermeldungen bei der Installation via pip == Erhält man bei der Installation via pip Fehlermeldungen, dass Python-Module nicht gefunden werden bzw. Abhängigkeiten von Mu nicht aufgelöst werden können, ist wahrscheinlich die genutzt Version von pip zu alt. Diese kann man über den Befehl {{{#!vorlage Befehl pip3 install -U pip }}} aktualisieren[2]. Danach sollte die Installation funktionieren. == Fehlermeldung fehlende Pakete bei der Installation via pip == Erhält man bei der Installation via pip Fehlermeldung, dass Module wie z.B. pygame oder matplotlib wegen fehlender (Header-) Dateien nicht installiert werden können, muss man diese vor der Installation über die Paketverwaltung installieren: {{{#!vorlage Paketinstallation libpng-dev libfreetype-dev libsdl-image1.2-dev libsdl-ttf2.0-dev libsdl-mixer1.2-dev libportmidi-dev }}} Nach der erfolgreichen Installation von Mu können die Pakete wieder entfernt werden. == REPL für Micro:Bit funktioniert nicht == Bekommt man bei einem Klick auf die Schaltfläche ''"REPL"'' eine Fehlermeldung, dass auf den Micro:Bit nicht zugegriffen werden kann, dann fehlen die notwendigen Rechte. Der Benutzer muss Mitglied der Gruppe `dialout` sein, um den interaktiven Programmiermodus nutzen zu können. Fügt man den Benutzer der Gruppe hinzu[3] und meldet sich ab und wieder an, dann sollte auch der Read-Eval-Print-Loop funktionieren. Ohne Ab- und erneute Anmeldung funktioniert es mit dem Befehl [:newgrp:]. = Links = * [https://codewith.mu Projektseite] {en} * [https://codewith.mu/en/tutorials/ Tutorials] {en} - kurze, gut verständliche Tutorials zu den verschiedenen Funktionen und Modi von Mu * [https://codewith.mu/en/howto/ Short how-to guides] {en} -Reihe von Howto Guides für Mu * [github:mu-editor/mu:Quellcode] {en} #tag: Programmierung, Python, Editor