VS Code und Python
Debugging
Das komfortable Debuggen von programmierten Code ist eine zentrale Funktion einer Entwicklungsumgebung. Daher ist die Unterstützung sehr wichtig! VS Code unterstützt dies für sehr viele Programmiersprachen. Dies soll mit der Python demonstriert werden.
Ist ein Python-Skript erzeugt, dann soll es untersucht werden. Dazu dient folgendes Beispiel:
deb_1.py
data = { "name":"vari","val":123}
def func(a):
erg = a*234
return erg
def main():
v1 = 23.32
v2 = 0.001
s1 = func(v1)
s2 = func(v1+v2)
print(f'erg1 = {s1}s, erg2={s2}mm')
if __name__ == "__main__":
main()
Starten des Debug-Vorgangs
Da das Programm immer wieder im Debug-Modus untersucht werden muss, sollte unbedingt eine Debug-Einstallung launch.json angelegt werden:
Auswahl der Debuggers (1)
Auswahl der Debuggers (1)
Automatisch generierte ./.vscode/launch.json
Datei
Die gemnerierte lauch.json
kann jederzeit geändert oder erweitert werden:
{
// Verwendet IntelliSense zum Ermitteln möglicher Attribute.
// Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen.
// Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python-Debugger: Aktuelle Datei",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}
Eine Erweiterung kann die Konfiguration "MainApp" sein, in der die aktuelle Version eines Hauptprogramms gesetz wird. So muss nicht zwingend das auszuführende py-Skript im Editor geladen sein ("aktuelle Datei"):
lauch.json | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
- mainApp
- Argumente, die in der mainApp ausgewertet werden können
Debug-Lauf
Um ein Skript untersuchen zu können, müssen sogenannte "Breakpoints" vorhanden sein. Diese lassen sich im Editor durch Klick in der linken Spalte anlegen:
Angehaltenes Skript mit Variableninhalten:
Eine interaktive Untersuchung von Daten - auch mittels Skripting - kann mit der Debugkonsole gestartet werden:
Jupyter-Notebook
Eine noch stärker interaktiv ausgeprägte Vorgehensweise bei der Entwicklung von Skripten kann mit dem Jupyter-Notebook realsiert werden. Diese Variante findet zwei Realsierungen:
a. Webserverbasiert (JupyterLab) b. VS Code - integriert (Jupyter)
Wenn VS Code eh genutzt wird, dann bietet sich diese Variante direkt an. Der Start ist denkbar einfach: Erzeuge eine neue Datei mit der Endung ipynb
(interactive python notebook). Beim ersten Mal erkennt VSC den neuen Dateityp und installiert die Jupyter-Umgebung für den aktive Python-Interpreter. Danach erscheint ein Block-orientierte Editor, die in Code-Bereich und optionalen "Markdown-"Bereich untergliedert ist:
Beispiel
Die nachfolgende Grafik zeigt das komplette Beispiel. Dabei werden der Reihe nach die einzelnen Blöcke ausgeführt und der letzte Block zeigt die Konsolenausgabe mit print()
:
Die weitere Vorgehensweise zeigt die Flexibilität und Freiheit von Jupyter-NB:
- Blöcke lassen sich in beliebiger Reihenfolge (auch geändert!) wieder ausführen
- Neue Blöcke (Code, Markdown) lassen überall einfügen, verschieben oder löschen.
- Dokumentation mit der Markdown-Syntax ( Link)
Plotausgabe:
Um im Notebook direkt Plotausgaben anzeigen zu könne, braucht es die Installation einer VSC-Toolbox: Jupyter-Render:
Remote-Entwicklung
Bisher wurden die Python-Programm lokal auf dem Rechner ausgeführt, auf dem auch mit VSC programmiert wurde. In der IoT ist es i.d.r. so, dass die Server bzw. Gateway's mit einem Netzwerk verbunden dezentral arbeiten. Für die Remote-Arbeit (auch über das Internet) müssen gesicherte Verbindungen aufgebaut werden, um mit den verschiedenen Werkzeugen auf dem Zielsystem arbeiten aus der Ferne (=Remote) zu können.
Info - Installation
In VSC muss die Erweiterung "Remote - SSH" installiert sein.
Test-Umgebung
Um die nachfolgenden Schritte testen zu können, braucht es ein Remote-System. Dies können sein:
- virtuelle Systeme Kapitel
- HyperV-Linux
- VirtualBox-Linux
- RaspberryPi
- ...
SSH-Remote-Verbindung
Um eine SSH-Remote-Verbindung mit einem Server herstellen zu können, muss auf dem Server ein SSH-Server installiert sein. In der Regel werden heute (Windows, Linux) "OpenSSH-Server" eingesetzt. Für eine Verbindung werden benötigt:
- IP-Adresse
- Benutzer
- Passwort
Ist die VSC-Remote-Erweiterung installiert, dann erscheint in der linken unteren Ecke des VSC folgendes Icon:
Starten:
neuen SSH-Host...
Verbindung als user@ip
:
Verbindung speichern:
Nach erfolgreicher Verbindung: Ordner wählen
Anmeldung (ist bei jeder neuen Verbindung bzw. Ordner-Wechsel erforderlich):
Alle weiteren Schritte entsprechen dem lokalen Arbeiten bei der Python-Programmierung.
Info
- Das Terminal ist ein SSH-Terminal, mit dem alle weiteren administrativen Aufgaben auf dem Zielsystemn ausgeführt werden können.
- Zur Vorbereitung einer Python-Projektumgebung empfiehlt sich die Nutzung von UV !!! Kapitel