<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Terminal_Entwicklungsumgebung_und_Projektstruktur_beherrschen</id>
	<title>Terminal Entwicklungsumgebung und Projektstruktur beherrschen - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Terminal_Entwicklungsumgebung_und_Projektstruktur_beherrschen"/>
	<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Terminal_Entwicklungsumgebung_und_Projektstruktur_beherrschen&amp;action=history"/>
	<updated>2026-10-22T09:37:42Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in MOOCsWiki Staging</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://staging.moocwiki.org/index.php?title=Terminal_Entwicklungsumgebung_und_Projektstruktur_beherrschen&amp;diff=72878&amp;oldid=prev</id>
		<title>Glanz: AI MOOC Plugin fc27f4d134563ba9b780797335289108</title>
		<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Terminal_Entwicklungsumgebung_und_Projektstruktur_beherrschen&amp;diff=72878&amp;oldid=prev"/>
		<updated>2026-10-21T22:06:45Z</updated>

		<summary type="html">&lt;p&gt;AI MOOC Plugin fc27f4d134563ba9b780797335289108&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{T}}&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Einleitung =&lt;br /&gt;
Du entwickelst ein überschaubares, lokal laufendes Lehrprojekt: eine Messdaten-App, die ausschließlich &amp;#039;&amp;#039;&amp;#039;erfundene Prüfwerte&amp;#039;&amp;#039;&amp;#039; eines ungefährlichen Lehrbauteils aus einer CSV-Datei liest und einen Textbericht schreibt. Dafür lernst du, dich im Terminal zu orientieren, Dateien gezielt abzulegen, ein Projekt von einem leeren Ordner aus aufzubauen und Python-Abhängigkeiten nachvollziehbar zu dokumentieren. Du brauchst keine Programmiererfahrung; Kenntnisse über Dateien und Maßeinheiten genügen. Empfohlen: 1. bis 2. Ausbildungsjahr.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lernprodukt:&amp;#039;&amp;#039;&amp;#039; Ein isoliertes Projektgerüst mit Laufzeitumgebung, verständlicher README-Datei, Datendatei, kleinem ausführbarem Skript und dokumentierten Abhängigkeiten. Am Schluss belegst du drei überprüfbare Kriterien: &amp;#039;&amp;#039;&amp;#039;Start aus leerem Ordner&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Schreibpfade erklären&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Abhängigkeiten festhalten&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vorwissen aktivieren (5 Minuten):&amp;#039;&amp;#039;&amp;#039; Was unterscheidet einen Ordner von einer Datei? Was ist eine Dateiendung? Wieso sind 12,5 mm und 12,5 cm nicht derselbe Messwert? Vergleiche bei Bedarf die [https://moocwiki.org/index.php?curid=60548 vorhandene MOOCwiki-Grundlage]. Ihr genauer Seiteninhalt konnte bei der Recherche nicht ausgelesen werden; daher wird hier nichts daraus als geprüftes Zitat ausgegeben. Dieser Kurs setzt beim nächsten Handlungsschritt an.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geltungsbereich:&amp;#039;&amp;#039;&amp;#039; Ausschließlich lokale Simulation und synthetische Daten; keine Verbindung zu Maschinen, Sensoren, Prüfständen, Produktionsnetzwerken oder sicherheitsrelevanten Freigaben. Das unabhängige Bildungsangebot stellt weder eine offizielle Liebherr-Schulung noch eine IHK-Zertifizierung dar. Alle Kernaufgaben sind offline mit lokal vorhandenem Python und einem Texteditor möglich, ohne kostenpflichtiges KI-Konto.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Terminal, Editor und Projektwurzel verstehen =&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Werkzeugkette und Begriffe ==&lt;br /&gt;
Ein &amp;#039;&amp;#039;&amp;#039;Terminal&amp;#039;&amp;#039;&amp;#039; ist ein Programmfenster zur Texteingabe. Eine &amp;#039;&amp;#039;&amp;#039;Shell&amp;#039;&amp;#039;&amp;#039; interpretiert Befehle wie den Verzeichniswechsel. Der &amp;#039;&amp;#039;&amp;#039;Editor&amp;#039;&amp;#039;&amp;#039; verändert Quelltexte; der &amp;#039;&amp;#039;&amp;#039;Interpreter&amp;#039;&amp;#039;&amp;#039; führt Python-Code aus. Ein &amp;#039;&amp;#039;&amp;#039;Arbeitsverzeichnis&amp;#039;&amp;#039;&amp;#039; ist der Ordner, auf den sich relative Pfade normalerweise beziehen. Eine &amp;#039;&amp;#039;&amp;#039;Projektwurzel&amp;#039;&amp;#039;&amp;#039; ist das bewusst festgelegte oberste Verzeichnis deines Projekts. Terminal und Editor sind Werkzeuge; sie sind nicht selbst die Laufzeitumgebung.&lt;br /&gt;
&lt;br /&gt;
[[File:Animated GNU Bash Unix Shell Prompt.gif|500px|frameless|center|alt=Blinkender Cursor am Ende einer textbasierten Bash-Eingabeaufforderung|Animation einer Shell-Eingabeaufforderung]]&lt;br /&gt;
&amp;#039;&amp;#039;Medienhinweis: Der blinkende Cursor signalisiert Eingabebereitschaft; ohne Animation reicht die Beschreibung „Textfenster mit blinkendem Cursor“.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Sicher im Verzeichnis navigieren ==&lt;br /&gt;
Öffne ein Terminal in einem eigens für den Kurs gewählten Übungsordner, niemals mit Administratorrechten. Unter Linux oder macOS zeigt &amp;lt;code&amp;gt;pwd&amp;lt;/code&amp;gt; den aktuellen Pfad und &amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt; Dateien; unter Windows PowerShell nutzt du &amp;lt;code&amp;gt;Get-Location&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;Get-ChildItem&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; wechselt den Ort. &amp;lt;code&amp;gt;mkdir messdaten-lehrprojekt&amp;lt;/code&amp;gt; legt einen Projektordner an; danach &amp;lt;code&amp;gt;cd messdaten-lehrprojekt&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt; bezeichnet den Elternordner und &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; das aktuelle Verzeichnis. Bei Leerzeichen setzt du Pfade in Anführungszeichen. &amp;#039;&amp;#039;&amp;#039;Nicht&amp;#039;&amp;#039;&amp;#039; mit unbekannten Lösch-, Download- oder Administrationsbefehlen experimentieren.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Merksatz:&amp;#039;&amp;#039;&amp;#039; Prüfe vor jedem schreibenden Befehl das Arbeitsverzeichnis, den Zielpfad und die erwartete Änderung. Wichtige Vorkontrolle: „Wo bin ich – was entsteht – wie nehme ich es zurück?“ &lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Dateien und Schreibpfade planbar anlegen =&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Ordnerstruktur für die Lehr-App ==&lt;br /&gt;
Die geplante Projektwurzel erhält folgende Einträge. Lege sie zunächst mit einem Dateimanager oder Texteditor an; damit funktioniert die Aufgabe betriebssystemübergreifend.&lt;br /&gt;
&lt;br /&gt;
 messdaten-lehrprojekt/&lt;br /&gt;
   README.md&lt;br /&gt;
   requirements.txt&lt;br /&gt;
   .gitignore&lt;br /&gt;
   .venv/                 (erst nach dem Laufzeit-Schritt)&lt;br /&gt;
   daten/&lt;br /&gt;
     pruefwerte.csv&lt;br /&gt;
   src/&lt;br /&gt;
     messapp.py&lt;br /&gt;
   ausgabe/                (wird beim Start automatisch angelegt)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Funktionen:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;daten/&amp;lt;/code&amp;gt; enthält nur unveränderliche Übungs-Eingaben. &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt; enthält Quelltext. &amp;lt;code&amp;gt;ausgabe/&amp;lt;/code&amp;gt; enthält neue Berichte und darf neu erzeugt werden. &amp;lt;code&amp;gt;.venv/&amp;lt;/code&amp;gt; speichert die projektspezifische Python-Laufzeit und installierte Pakete; sie ist &amp;#039;&amp;#039;&amp;#039;kein&amp;#039;&amp;#039;&amp;#039; Datenablageort. &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt; dokumentiert Ziel, Installation, Start und Grenzen. &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; hält externe Python-Paketabhängigkeiten fest.&lt;br /&gt;
&lt;br /&gt;
[[File:File Hierarchy.png|500px|frameless|center|alt=Beispiel eines hierarchischen Dateisystems mit ineinanderliegenden Verzeichnissen|Baumartige Struktur von Ordnern und Dateien]]&lt;br /&gt;
&amp;#039;&amp;#039;Alternative ohne Bild: Die Einrückung im oben stehenden Projektbaum zeigt, welche Dateien in welchen Ordnern liegen.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Absolute, relative und sichere Pfade ==&lt;br /&gt;
Ein &amp;#039;&amp;#039;&amp;#039;absoluter Pfad&amp;#039;&amp;#039;&amp;#039; beginnt an einer Systemwurzel oder an einem Laufwerk; ein &amp;#039;&amp;#039;&amp;#039;relativer Pfad&amp;#039;&amp;#039;&amp;#039; wird von einem Bezugspunkt aus interpretiert. &amp;lt;code&amp;gt;daten/pruefwerte.csv&amp;lt;/code&amp;gt; ist nur dann relativ zur Projektwurzel auflösbar, wenn das Arbeitsverzeichnis stimmt. Robuster ist es, den Pfad zur Skriptdatei selbst als Ausgangspunkt zu verwenden. In Python liefert &amp;lt;code&amp;gt;Path(__file__).resolve().parents[1]&amp;lt;/code&amp;gt; aus &amp;lt;code&amp;gt;src/messapp.py&amp;lt;/code&amp;gt; die Projektwurzel, auch wenn du das Skript von einem anderen Ordner aus startest.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Schreibregel:&amp;#039;&amp;#039;&amp;#039; Die App schreibt ausschließlich unter &amp;lt;code&amp;gt;ausgabe/&amp;lt;/code&amp;gt; und verändert niemals &amp;lt;code&amp;gt;daten/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt; oder fremde Nutzerordner. Nicht blind einen extern übergebenen Dateipfad als Schreibziel verwenden: Sonst kann ein fehlerhafter relativer Pfad ungewollt außerhalb des Projektverzeichnisses landen. Dies ist eine &amp;#039;&amp;#039;&amp;#039;didaktische Begrenzung&amp;#039;&amp;#039;&amp;#039;, noch keine vollständige Betriebssystem-Sandbox.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Datensatz und Einheit ==&lt;br /&gt;
Speichere als UTF-8-Datei unter &amp;lt;code&amp;gt;daten/pruefwerte.csv&amp;lt;/code&amp;gt; genau diese synthetischen Beobachtungen; der Punkt ist hier das Dezimaltrennzeichen, damit das Python-CSV-Beispiel sie eindeutig liest:&lt;br /&gt;
&lt;br /&gt;
 teil_id,laenge_mm&lt;br /&gt;
 LEHR-A,12.0&lt;br /&gt;
 LEHR-B,12.4&lt;br /&gt;
 LEHR-C,11.8&lt;br /&gt;
&lt;br /&gt;
Die zulässige &amp;#039;&amp;#039;&amp;#039;Übungsannahme&amp;#039;&amp;#039;&amp;#039; lautet 11,5 bis 12,5 mm einschließlich; sie ist &amp;#039;&amp;#039;&amp;#039;keine&amp;#039;&amp;#039;&amp;#039; echte Produktspezifikation. Nutze keine realen Messwerte, personenbezogenen Daten oder Prüfmittelkennungen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Laufzeitumgebung und lokale Werkzeuge einrichten =&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Python, Interpreter und Version ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Python&amp;#039;&amp;#039;&amp;#039; ist eine Programmiersprache; der Python-&amp;#039;&amp;#039;&amp;#039;Interpreter&amp;#039;&amp;#039;&amp;#039; führt die .py-Datei aus. Prüfe, ob Python lokal installiert ist: &amp;lt;code&amp;gt;python --version&amp;lt;/code&amp;gt;, auf manchen Systemen &amp;lt;code&amp;gt;python3 --version&amp;lt;/code&amp;gt; oder unter Windows &amp;lt;code&amp;gt;py --version&amp;lt;/code&amp;gt;. Für dieses Beispiel ist Python ab Version 3.11 sinnvoll. Die Befehlsnamen unterscheiden sich nach System und Installationsweg. &amp;lt;code&amp;gt;python -c &amp;quot;import sys; print(sys.executable)&amp;quot;&amp;lt;/code&amp;gt; zeigt den tatsächlich verwendeten Interpreter.&lt;br /&gt;
&lt;br /&gt;
[[File:Python IDLE.png|500px|frameless|center|alt=Screenshot der Python-IDLE-Oberfläche mit textbasierter Python-Eingabe|Python kann auch interaktiv Befehle ausführen]]&lt;br /&gt;
&amp;#039;&amp;#039;Ohne Bild: Der Interpreter verarbeitet Python-Anweisungen und gibt im interaktiven Modus ein Ergebnis zurück.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Eine lokale virtuelle Umgebung statt globaler Eingriffe ==&lt;br /&gt;
Starte &amp;#039;&amp;#039;&amp;#039;innerhalb der Projektwurzel&amp;#039;&amp;#039;&amp;#039; mit einem der zum System passenden Befehle:&lt;br /&gt;
* Linux/macOS: &amp;lt;code&amp;gt;python3 -m venv .venv&amp;lt;/code&amp;gt;&lt;br /&gt;
* Windows: &amp;lt;code&amp;gt;py -m venv .venv&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit entsteht ein eigenes Interpreter- und Paketverzeichnis &amp;#039;&amp;#039;&amp;#039;.venv&amp;#039;&amp;#039;&amp;#039;. Es benutzt weiterhin eine vorhandene Basisinstallation, trennt aber normalerweise die Projektpakete von anderen Projekten. Eine &amp;#039;&amp;#039;&amp;#039;virtuelle Umgebung ist keine vollständige Sicherheits-Sandbox&amp;#039;&amp;#039;&amp;#039;: Ein ausgeführtes Programm kann weiterhin auf erlaubte Systemdateien und Netzwerke zugreifen. Zum aktiven Lernen genügt deshalb ein lokaler, nicht privilegierter Ordner mit geprüften Befehlen.&lt;br /&gt;
&lt;br /&gt;
Aktivierung (optional): Linux/macOS &amp;lt;code&amp;gt;source .venv/bin/activate&amp;lt;/code&amp;gt;; Windows PowerShell &amp;lt;code&amp;gt;.venv\Scripts\Activate.ps1&amp;lt;/code&amp;gt;; Windows Eingabeaufforderung &amp;lt;code&amp;gt;.venv\Scripts\activate.bat&amp;lt;/code&amp;gt;. Wenn eine Richtlinie das Aktivierungsskript sperrt, nicht unbedacht Schutzmechanismen lockern, sondern direkt &amp;lt;code&amp;gt;.venv/bin/python&amp;lt;/code&amp;gt; beziehungsweise &amp;lt;code&amp;gt;.venv\Scripts\python.exe&amp;lt;/code&amp;gt; verwenden. Prüfe mit &amp;lt;code&amp;gt;python -c &amp;quot;import sys; print(sys.prefix, sys.base_prefix)&amp;quot;&amp;lt;/code&amp;gt;: Sind die Pfade unterschiedlich, läuft die Sitzung normalerweise in einer virtuellen Umgebung. Aktivieren verändert vor allem die Befehlsauflösung in der aktuellen Shell; eine konkrete Interpreterpfadangabe funktioniert auch ohne Aktivierung.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|https://www.youtube.com/watch?v=PQH0uFxCvTU|500|center}}&lt;br /&gt;
&amp;#039;&amp;#039;Deutschsprachige ergänzende Videoeinführung „Python venv einfach erklärt“ (Programmieren mit Chris, 19.05.2024). Die Suchindex-Metadaten wurden gefunden, die Wiedergabe auf YouTube konnte bei der Recherche nicht direkt getestet werden. Lernalternative ohne Video: den vorigen Absatz durchführen und &amp;lt;code&amp;gt;sys.prefix&amp;lt;/code&amp;gt; vergleichen.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Vom Editor zum kontrollierten Start ==&lt;br /&gt;
Öffne das Skript aus dem Projektordner im Editor deiner Wahl. Prüfe vor dem Ausführen immer, &amp;#039;&amp;#039;&amp;#039;welche&amp;#039;&amp;#039;&amp;#039; Datei du startest und &amp;#039;&amp;#039;&amp;#039;welcher&amp;#039;&amp;#039;&amp;#039; Interpreter sie ausführt. Starte später aus der Projektwurzel unter Linux/macOS mit &amp;lt;code&amp;gt;.venv/bin/python src/messapp.py&amp;lt;/code&amp;gt; oder unter Windows mit &amp;lt;code&amp;gt;.venv\Scripts\python.exe src\messapp.py&amp;lt;/code&amp;gt;. Nutze nur lokal eingegebene oder selbst geprüfte Befehle. Kein externes Konto ist erforderlich.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Paketverwaltung und nachvollziehbare Abhängigkeiten =&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Standardbibliothek und Fremdpakete trennen ==&lt;br /&gt;
Python bringt &amp;#039;&amp;#039;&amp;#039;Standardbibliothek&amp;#039;&amp;#039;&amp;#039;-Module wie &amp;lt;code&amp;gt;csv&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;pathlib&amp;lt;/code&amp;gt; mit. Die Lehr-App benötigt &amp;#039;&amp;#039;&amp;#039;keine Fremdpakete&amp;#039;&amp;#039;&amp;#039;. Eine &amp;#039;&amp;#039;&amp;#039;Paketverwaltung&amp;#039;&amp;#039;&amp;#039; wie &amp;lt;code&amp;gt;pip&amp;lt;/code&amp;gt; kann geprüfte zusätzliche Pakete in die aktivierte Umgebung installieren. Eine &amp;#039;&amp;#039;&amp;#039;Abhängigkeit&amp;#039;&amp;#039;&amp;#039; ist ein externes Softwarepaket, das die Anwendung für ihren Betrieb benötigt. Installationspaket und importiertes Python-Modul können unterschiedlich heißen.&lt;br /&gt;
&lt;br /&gt;
Speichere für dieses Lernprodukt in &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; folgende wahrheitsgemäße Zeile:&lt;br /&gt;
&lt;br /&gt;
 # Keine externen Python-Pakete erforderlich; csv und pathlib sind Standardbibliothek.&lt;br /&gt;
&lt;br /&gt;
Dokumentiere zusätzlich im README die benötigte Python-Mindestversion. So sind auch &amp;#039;&amp;#039;&amp;#039;null&amp;#039;&amp;#039;&amp;#039; externe Abhängigkeiten explizit festgehalten. In weiterführenden Projekten lassen sich überprüfte direkte Pakete z. B. als &amp;lt;code&amp;gt;paketname==1.2.3&amp;lt;/code&amp;gt; pinnen; &amp;lt;code&amp;gt;python -m pip freeze&amp;lt;/code&amp;gt; zeigt die installierten Pakete und Versionen. Achtung: Eine automatisch erzeugte Liste aller installierten Pakete ist nicht immer identisch mit den fachlich benötigten direkten Abhängigkeiten.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Installation und Nachweis ==&lt;br /&gt;
Prüfe innerhalb der Umgebung mit &amp;lt;code&amp;gt;python -m pip --version&amp;lt;/code&amp;gt; den Ziel-Interpreter. Für ein späteres Projekt mit externen Paketen wäre &amp;lt;code&amp;gt;python -m pip install -r requirements.txt&amp;lt;/code&amp;gt; üblich; dafür wären vertrauenswürdige Paketquellen, Internetzugang und vorherige Prüfung erforderlich. &amp;#039;&amp;#039;&amp;#039;Im vorliegenden Offline-Projekt wird nichts heruntergeladen&amp;#039;&amp;#039;&amp;#039;. Übertrage niemals Installationsbefehle aus unbekannten Chat-Nachrichten blind in die Shell. Schließe Version, Herkunft, Rechte und Netzwerkbedarf in die Planung ein.&lt;br /&gt;
&lt;br /&gt;
[[File:Typing - Model F 122 1984.ogg|center|alt=Zwölf Sekunden hörbares Tippen auf einer mechanischen Computertastatur|Tonbeispiel einer Tastatur]]&lt;br /&gt;
&amp;#039;&amp;#039;Barrierefreie Textalternative: wiederholte kurze Tastenanschläge; der Ton ist freiwilliges Begleitmaterial und vermittelt keinen zusätzlichen Fachinhalt.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Sandbox als nächste Entwicklungsstufe ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Isolation hat Stufen:&amp;#039;&amp;#039;&amp;#039; Ein eigener Projektordner begrenzt die Ordnung, eine &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; isoliert überwiegend Python-Pakete, eingeschränkte Benutzerrechte schützen zusätzlich, und eine korrekt konfigurierte &amp;#039;&amp;#039;&amp;#039;Sandbox&amp;#039;&amp;#039;&amp;#039; kann darüber hinaus Dateizugriffe oder Netzwerkzugriffe technisch begrenzen. Keine dieser Maßnahmen ist pauschal eine Sicherheitsfreigabe. Besonders KI-generierte Befehle und fremde Paketinstallationen sind als &amp;#039;&amp;#039;&amp;#039;nicht vertrauenswürdig&amp;#039;&amp;#039;&amp;#039; zu prüfen; erst verstehen, dann in einer geeigneten Testumgebung ausführen. Prinzip: die kleinsten nötigen Rechte vergeben und jede Änderung nachvollziehbar machen.&lt;br /&gt;
&lt;br /&gt;
Die NIST-Publikation AI 600-1 (2024) beschreibt allgemeines Risikomanagement für generative KI, nicht speziell &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt;. Die MCP-Sicherheitsdokumentation (Fassung/URL 28.07.2026) beschäftigt sich mit Risiken von MCP-Implementierungen, nicht mit der Bedienung eines lokalen Terminals. Beides dient hier als &amp;#039;&amp;#039;&amp;#039;Transferhintergrund&amp;#039;&amp;#039;&amp;#039;, nicht als angeblicher Nachweis einer sicheren Python-Umgebung.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Praxisprojekt: Prüfwerte lokal auswerten und Fehler erklären =&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Geführtes Beispiel: Programm ==&lt;br /&gt;
Erstelle unter &amp;lt;code&amp;gt;src/messapp.py&amp;lt;/code&amp;gt; diesen kleinen Quelltext. Er verwendet nur Standardbibliothek, liest die synthetischen CSV-Werte und erzeugt &amp;lt;code&amp;gt;ausgabe/bericht.txt&amp;lt;/code&amp;gt;. Der Code hat &amp;#039;&amp;#039;&amp;#039;keinerlei&amp;#039;&amp;#039;&amp;#039; Verbindung zu Messhardware.&lt;br /&gt;
&lt;br /&gt;
 from pathlib import Path&lt;br /&gt;
 import csv&lt;br /&gt;
&lt;br /&gt;
 BASIS = Path(__file__).resolve().parents[1]&lt;br /&gt;
 EINGABE = BASIS / &amp;quot;daten&amp;quot; / &amp;quot;pruefwerte.csv&amp;quot;&lt;br /&gt;
 ZIELORDNER = BASIS / &amp;quot;ausgabe&amp;quot;&lt;br /&gt;
 ZIELDATEI = ZIELORDNER / &amp;quot;bericht.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 def pruefen():&lt;br /&gt;
     ergebnisse = []&lt;br /&gt;
     with EINGABE.open(encoding=&amp;quot;utf-8&amp;quot;, newline=&amp;quot;&amp;quot;) as datei:&lt;br /&gt;
         for zeile in csv.DictReader(datei):&lt;br /&gt;
             wert = float(zeile[&amp;quot;laenge_mm&amp;quot;])&lt;br /&gt;
             status = &amp;quot;im Übungsbereich&amp;quot; if 11.5 &amp;lt;= wert &amp;lt;= 12.5 else &amp;quot;außerhalb&amp;quot;&lt;br /&gt;
             ergebnisse.append(f&amp;#039;{zeile[&amp;quot;teil_id&amp;quot;]}: {wert:.1f} mm – {status}&amp;#039;)&lt;br /&gt;
     return ergebnisse&lt;br /&gt;
&lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
     zeilen = pruefen()&lt;br /&gt;
     ZIELORDNER.mkdir(parents=True, exist_ok=True)&lt;br /&gt;
     ZIELDATEI.write_text(&amp;quot;\n&amp;quot;.join(zeilen) + &amp;quot;\n&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;)&lt;br /&gt;
     print(f&amp;quot;Lehrbericht: {ZIELDATEI}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Erwartete Prüfung:&amp;#039;&amp;#039;&amp;#039; Du erhältst drei Textzeilen mit den Werten 12.0, 12.4 und 11.8 mm; alle drei liegen innerhalb des festgelegten Übungsbereichs. Die Datendatei bleibt unverändert; nur &amp;lt;code&amp;gt;ausgabe/bericht.txt&amp;lt;/code&amp;gt; wird erstellt beziehungsweise überschrieben. Verwende einen neuen Übungsordner, falls alte Ergebnisse nicht verändert werden sollen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== README und Wiederaufbau ==&lt;br /&gt;
Schreibe in &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt; mit eigenen Worten: &amp;#039;&amp;#039;&amp;#039;Zweck&amp;#039;&amp;#039;&amp;#039; (synthetische Übungswerte), &amp;#039;&amp;#039;&amp;#039;Voraussetzungen&amp;#039;&amp;#039;&amp;#039; (Python 3.11 oder neuer, Texteditor), &amp;#039;&amp;#039;&amp;#039;Aufbau&amp;#039;&amp;#039;&amp;#039; (Ordnerbaum), &amp;#039;&amp;#039;&amp;#039;Installation&amp;#039;&amp;#039;&amp;#039; (lokale &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt;, keine Fremdpakete), &amp;#039;&amp;#039;&amp;#039;Start&amp;#039;&amp;#039;&amp;#039; (korrekter Interpreter und Skriptpfad), &amp;#039;&amp;#039;&amp;#039;Eingaben und Ausgaben&amp;#039;&amp;#039;&amp;#039; (beide exakte Pfade), &amp;#039;&amp;#039;&amp;#039;Test&amp;#039;&amp;#039;&amp;#039; (drei erwartete Zeilen), &amp;#039;&amp;#039;&amp;#039;Grenzen&amp;#039;&amp;#039;&amp;#039; (keine reale Prüfung). Ergänze den Hinweis: &amp;lt;code&amp;gt;.venv/&amp;lt;/code&amp;gt; ist erzeugbar und wird nicht verteilt. Trage in &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; die Zeilen &amp;lt;code&amp;gt;.venv/&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;ausgabe/&amp;lt;/code&amp;gt; ein. Das Ausblenden in Git ist &amp;#039;&amp;#039;&amp;#039;keine&amp;#039;&amp;#039;&amp;#039; Zugriffssperre.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Test A – leerer Ordner:&amp;#039;&amp;#039;&amp;#039; Lege einen frischen, leeren Testordner an und stelle Dateien anhand deiner README mit ausschließlich lokalen Mitteln wieder her. Erzeuge die &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; neu und starte die App. Ergebnis: derselbe Bericht ohne manuelle Pfadkorrektur. &amp;#039;&amp;#039;&amp;#039;Test B – Schreibpfad:&amp;#039;&amp;#039;&amp;#039; Erläutere nachvollziehbar, warum der Zielpfad immer unter &amp;lt;code&amp;gt;ausgabe/&amp;lt;/code&amp;gt; liegt, auch wenn das Skript von einem anderen Arbeitsverzeichnis gestartet wird. &amp;#039;&amp;#039;&amp;#039;Test C – Abhängigkeiten:&amp;#039;&amp;#039;&amp;#039; Belege mit &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt; und dem README, warum kein Download nötig ist, und benenne die Interpreter-Mindestversion.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerfall systematisch begründen ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fehlerfall:&amp;#039;&amp;#039;&amp;#039; Die App meldet &amp;lt;code&amp;gt;FileNotFoundError&amp;lt;/code&amp;gt; für &amp;lt;code&amp;gt;daten/pruefwerte.csv&amp;lt;/code&amp;gt;. Suche nicht zuerst nach einer neuen Bibliothek, sondern prüfe, ob die Datei am erwarteten Ort liegt, richtig heißt und die Groß-/Kleinschreibung passt. Wenn &amp;lt;code&amp;gt;pruefwerte.csv&amp;lt;/code&amp;gt; versehentlich in &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt; liegt, ist der &amp;#039;&amp;#039;&amp;#039;Dateipfad&amp;#039;&amp;#039;&amp;#039; falsch, nicht die Python-Laufzeit. Korrigiere die Struktur oder den fachlich begründeten Eingabepfad und erkläre, warum das die Fehlermeldung behebt.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Transferfall:&amp;#039;&amp;#039;&amp;#039; Eine vorgeschlagene Erweiterung möchte für ein Diagramm eine zusätzliche Bibliothek global installieren und Berichte in den Benutzerordner schreiben. Entscheide selbst: vorerst keine Fremdbibliothek; falls später erforderlich, überprüfte Version nur in der &amp;lt;code&amp;gt;venv&amp;lt;/code&amp;gt; verwenden; Berichte bewusst im Projektordner belassen. Begründe Ziel, Risiken und Rückbaubarkeit. Dies bleibt Simulation; niemals Freigaben, Maschinenbefehle oder echte Produktionsdaten verwenden.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Interaktive Aufgaben =&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Quiz: Wissen anwenden ==&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum prüfst du vor dem Anlegen einer Datei den aktuellen Ordner?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Damit der Zielpfad und die Änderung vorhersehbar sind)&lt;br /&gt;
(!Damit Python automatisch schneller läuft)&lt;br /&gt;
(!Damit alle Ordner Administratorrechte erhalten)&lt;br /&gt;
(!Damit sämtliche Dateien automatisch verschlüsselt werden)&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;#039;&amp;#039;Lernhinweis: Prüfe den Unterschied zwischen aktuellem Verzeichnis und absolutem Zielpfad.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was ist die Projektwurzel?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Der vereinbarte oberste Ordner des zusammengehörigen Projekts)&lt;br /&gt;
(!Der globale Paket-Cache des Computers)&lt;br /&gt;
(!Die erste Zeile jedes Python-Skripts)&lt;br /&gt;
(!Der Dateiname eines Interpreters)&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;#039;&amp;#039;Lernhinweis: Denke an den gemeinsamen Ausgangspunkt von daten, src und README.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was bewirkt python -m venv .venv üblicherweise?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Eine projektspezifische Python-Umgebung wird angelegt)&lt;br /&gt;
(!Die Betriebssystemrechte werden vollständig aufgehoben)&lt;br /&gt;
(!Die Daten werden automatisch online gesichert)&lt;br /&gt;
(!Eine vollständige Sicherheits-Sandbox wird eingerichtet)&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;#039;&amp;#039;Lernhinweis: Unterscheide Paketisolation von Dateisystem- und Netzwerkbeschränkungen.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welche Datei gehört nach der Planung in den Eingabeordner?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(pruefwerte.csv)&lt;br /&gt;
(!bericht.txt)&lt;br /&gt;
(!requirements.txt)&lt;br /&gt;
(!messapp.py)&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;#039;&amp;#039;Lernhinweis: Die Quelldaten und die Berichte haben verschiedene Rollen.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wozu dient Path mit __file__ im Lehrskript?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Zum Bestimmen der Projektwurzel relativ zum Skriptstandort)&lt;br /&gt;
(!Zum Löschen alter fremder Benutzerdateien)&lt;br /&gt;
(!Zum Herunterladen fehlender Bibliotheken)&lt;br /&gt;
(!Zum Start einer Maschinenverbindung)&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;#039;&amp;#039;Lernhinweis: Der Bezugspunkt bleibt auch beim Wechsel des Arbeitsverzeichnisses stabil.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum enthält die requirements.txt hier keine Fremdpakete?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Weil csv und pathlib zur Python-Standardbibliothek gehören)&lt;br /&gt;
(!Weil virtuelle Umgebungen niemals Pakete benötigen)&lt;br /&gt;
(!Weil jedes Paket ohne Dokumentation nachgeladen wird)&lt;br /&gt;
(!Weil Python keine Paketverwaltung kennt)&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;#039;&amp;#039;Lernhinweis: Zähle direkte externe Abhängigkeiten statt alle möglichen Bibliotheken.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welcher Befehl hilft beim Feststellen der Interpreterversion?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(python --version)&lt;br /&gt;
(!mkdir --version)&lt;br /&gt;
(!cd --version)&lt;br /&gt;
(!ls --install)&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;#039;&amp;#039;Lernhinweis: Ein Versionskommando sollte sich auf das tatsächlich genutzte Laufzeitprogramm beziehen.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was ist bei globaler Paketinstallation das Hauptproblem?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Sie kann andere Projekte oder die Systemumgebung beeinflussen)&lt;br /&gt;
(!Sie speichert ausschließlich den Bericht im Projekt)&lt;br /&gt;
(!Sie verhindert jede Netzwerkverbindung)&lt;br /&gt;
(!Sie erstellt automatisch eine README)&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;#039;&amp;#039;Lernhinweis: Vergleiche den Geltungsbereich einer globalen Änderung mit einer lokalen Umgebung.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welcher Fehler erklärt eine fehlende Eingabedatei am ehesten?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Die CSV liegt nicht unter dem erwarteten relativen Projektpfad)&lt;br /&gt;
(!Die Datei enthält drei statt vier Datensätze)&lt;br /&gt;
(!Der Cursor blinkt in der Shell)&lt;br /&gt;
(!Das Projekt enthält keine Bilddatei)&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;#039;&amp;#039;Lernhinweis: Fehlermeldungen sollen anhand konkreter Pfade untersucht werden.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wann ist das Lernprodukt nachvollziehbar wiederherstellbar?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Wenn Anleitung, Daten, Skript und Abhängigkeiten einen frischen Aufbau ermöglichen)&lt;br /&gt;
(!Wenn nur ein Screenshot einer alten Ausführung existiert)&lt;br /&gt;
(!Wenn ausschließlich der alte .venv Ordner kopiert wird)&lt;br /&gt;
(!Wenn die Schritte nur im Kopf des Erstellers bekannt sind)&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;#039;&amp;#039;Lernhinweis: Eine andere Person soll die Umgebung ohne geheime Zusatzschritte rekonstruieren.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Memory: Begriffe und Bedeutungen ==&lt;br /&gt;
Ordne jeweils ein Fachwort seiner zutreffenden Erklärung zu.&lt;br /&gt;
&amp;lt;div class=&amp;quot;memo-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Shell || Programm, das Terminalbefehle interpretiert&lt;br /&gt;
|-&lt;br /&gt;
| Projektwurzel || Oberster gemeinsamer Arbeitsordner eines Projekts&lt;br /&gt;
|-&lt;br /&gt;
| Interpreter || Programm, das Python-Code ausführt&lt;br /&gt;
|-&lt;br /&gt;
| Paketverwaltung || Werkzeug zur Installation und Verwaltung zusätzlicher Softwarepakete&lt;br /&gt;
|-&lt;br /&gt;
| README || Anleitung zum Verständnis und Wiederaufbau des Projekts&lt;br /&gt;
|-&lt;br /&gt;
| Ausgabeordner || Geplanter Speicherort für erzeugte Ergebnisdateien&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Drag-and-Drop: Was gehört wohin? ==&lt;br /&gt;
Ordne jede Aufgabe dem passenden Ort oder Werkzeug zu.&lt;br /&gt;
&amp;lt;div class=&amp;quot;lueckentext-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Richtige Zuordnung&lt;br /&gt;
! Funktion im Lehrprojekt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;daten/pruefwerte.csv&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Synthetische Eingabewerte aufbewahren&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;src/messapp.py&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Logik der Lehr-App verwalten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;ausgabe/bericht.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Errechnetes Ergebnis speichern&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;README.md&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Wiederaufbau und Grenzen erklären&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;requirements.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Notwendige externe Pakete dokumentieren&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Kreuzworträtsel: Fachsprache festigen ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;kreuzwort-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Terminal || Textbasierter Zugang zu einer Befehlsshell&lt;br /&gt;
|-&lt;br /&gt;
| Ordner || Zusammenfassung von Dateien im Dateisystem&lt;br /&gt;
|-&lt;br /&gt;
| Interpreter || Programm zur Ausführung von Python-Anweisungen&lt;br /&gt;
|-&lt;br /&gt;
| Paket || Installierbare Zusammenfassung zusätzlicher Software&lt;br /&gt;
|-&lt;br /&gt;
| Pfad || Adresse zu einer Datei im Dateisystem&lt;br /&gt;
|-&lt;br /&gt;
| Sandbox || Technisch begrenzter Ausführungsraum zum Testen&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== LearningApps: Weitere Zuordnungsübungen ==&lt;br /&gt;
Suche passende bestehende Übungen zu Terminal, Projektstruktur, Python und virtuellen Umgebungen. Suchergebnisse sind Fremdinhalte; prüfe sie vor der Verwendung.&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://learningapps.org/index.php?s=Terminal+Entwicklungsumgebung+und+Projektstruktur+beherrschen &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alternative ohne LearningApps:&amp;#039;&amp;#039;&amp;#039; Ordne die fünf Aufgaben und fünf Orte aus der Drag-and-Drop-Tabelle auf Papier zu und erkläre zwei Entscheidungen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Lückentext: Arbeitsablauf begründen ==&lt;br /&gt;
&amp;lt;quiz display=simple&amp;gt;&lt;br /&gt;
{&amp;#039;&amp;#039;&amp;#039;Ergänze die Begriffe des Projekts.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|type=&amp;quot;{}&amp;quot;}&lt;br /&gt;
Der oberste Ordner eines zusammengehörigen Softwareprojekts heißt { Projektwurzel }.&lt;br /&gt;
Eine textbasierte Arbeitsoberfläche für Befehle nennt man { Terminal }.&lt;br /&gt;
Python-Dateien werden von einem { Interpreter } ausgeführt.&lt;br /&gt;
Eine lokal angelegte isolierte Python-Paketumgebung heißt { venv }.&lt;br /&gt;
Die synthetischen Prüfwerte liegen im Ordner { daten }.&lt;br /&gt;
Die Anwendung schreibt ihren Bericht in den Ordner { ausgabe }.&lt;br /&gt;
Eine verständliche Projektanleitung heißt { README }.&lt;br /&gt;
Externe Installationsabhängigkeiten hält man in einer { requirements.txt } fest.&lt;br /&gt;
Die Adresse zu einem Verzeichnis oder einer Datei heißt { Pfad }.&lt;br /&gt;
Eine darüber hinaus technisch eingeschränkte Testumgebung nennt man { Sandbox }.&lt;br /&gt;
&amp;lt;/quiz&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Offene Aufgaben =&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Leicht ===&lt;br /&gt;
# [[Dateisystem]]: Zeichne den Lehrprojekt-Baum mit daten, src, ausgabe, README und requirements und erläutere je einen Zweck.&lt;br /&gt;
# [[Terminal (Computer)]]: Führe harmlose Orientierungsbefehle im Übungsordner aus und notiere Arbeitsverzeichnis vor und nach cd.&lt;br /&gt;
# [[Python (Programmiersprache)]]: Ermittle ohne Netzverbindung Python-Version und Interpreterpfad und erkläre den Unterschied.&lt;br /&gt;
# [[CSV (Dateiformat)]]: Erstelle ausschließlich die drei synthetischen Prüfwerte und überprüfe Trennzeichen und Einheit mm.&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Standard ===&lt;br /&gt;
# [[Virtuelle Umgebung]]: Erzeuge eine lokale .venv und belege anhand von sys.prefix und sys.base_prefix die gewählte Laufzeit.&lt;br /&gt;
# [[Softwaredokumentation]]: Schreibe eine README, mit der eine zweite Person das Projekt aus leerem Ordner wiederaufbauen kann.&lt;br /&gt;
# [[Dateipfad]]: Starte das Skript aus zwei unterschiedlichen Arbeitsverzeichnissen und erkläre, warum dieselbe Ausgabedatei entsteht.&lt;br /&gt;
# [[Paketverwaltung]]: Begründe schriftlich die leere externe Abhängigkeitsliste und dokumentiere die erforderliche Python-Version.&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Schwer ===&lt;br /&gt;
# [[Fehleranalyse]]: Verschiebe die synthetische CSV testweise in einen falschen Übungsordner, dokumentiere Fehlermeldung, Ursache und begründete Reparatur und stelle den Sollzustand wieder her.&lt;br /&gt;
# [[Reproduzierbarkeit]]: Übergib Quelltext, Eingangsdaten und README an eine andere Lernperson und protokolliere, welche Wiederaufbauschritte gelingen und welche unklar bleiben.&lt;br /&gt;
# [[Sandbox]]: Vergleiche Projektordner, venv und echte Sandbox in einer selbst erstellten Risikomatrix für Datei- und Netzwerkzugriffe.&lt;br /&gt;
# [[Softwarearchitektur]]: Plane eine optionale Diagrammfunktion, begründe eine überprüfte Paketversion und beschreibe, wie man sie ohne globale Installation und ohne Produktionsdaten testen würde.&lt;br /&gt;
{{:Offene Aufgabe - MOOC erstellen}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernkontrolle =&lt;br /&gt;
# [[Projektstruktur]]: Erstelle in einem leeren Ordner ein vollständiges Lehrprojekt und zeige, welche Dateien absichtlich mitgeliefert und welche erzeugt werden.&lt;br /&gt;
# [[Laufzeitumgebung]]: Demonstriere mit einem konkreten Interpreterpfad, dass der Start in einer projektspezifischen Umgebung statt global erfolgt; erläutere verbleibende Risiken.&lt;br /&gt;
# [[Dateipfad]]: Beweise am Quelltext den Schreibort des Berichts und erkläre, warum ein anderer Shell-Startordner den Zielort nicht verschiebt.&lt;br /&gt;
# [[Abhängigkeit (Software)]]: Begründe, warum requirements.txt hier keine Fremdpakete auflistet, und formuliere die Dokumentation einer zukünftigen überprüften Zusatzbibliothek.&lt;br /&gt;
# [[Fehlersuche]]: Analysiere einen FileNotFoundError einschließlich erwarteten Pfads, tatsächlichem Pfad, Ursache, Reparatur und erneutem Test.&lt;br /&gt;
# [[IT-Sicherheit]]: Begründe, warum venv keine vollwertige Sandbox ist, und welche zusätzlichen Rechtebegrenzungen bei untrusted Code relevant wären.&lt;br /&gt;
# [[Dokumentation]]: Bewerte eine fremde README an den drei Kriterien Wiederaufbau, Schreibpfad und Abhängigkeiten und formuliere zwei überprüfbare Verbesserungen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernnachweis =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Abgabe:&amp;#039;&amp;#039;&amp;#039; Ein gezipptes oder lokal vorzeigbares, personenbezogenes-freies Projektgerüst mit &amp;lt;code&amp;gt;src/messapp.py&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;daten/pruefwerte.csv&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;requirements.txt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; und einer vorführbaren neu erzeugten lokalen Umgebung. Die generierte &amp;lt;code&amp;gt;.venv/&amp;lt;/code&amp;gt; gehört üblicherweise nicht in die Abgabe.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Kriterium !! Beobachtbarer Nachweis !! Erfolgreich, wenn&lt;br /&gt;
|-&lt;br /&gt;
| Aus leerem Ordner starten || Frischer Nachbau nach README und Bericht mit drei synthetischen Zeilen || Keine verborgenen Dateivoraussetzungen oder bezahlten Dienste nötig&lt;br /&gt;
|-&lt;br /&gt;
| Schreibpfade erklären || Zuordnung von Datenquelle, Skriptstandort und Ausgabe sowie ein zweiter Startordner || Es wird ausschließlich innerhalb des vorgesehenen Projekt-Ausgabeordners geschrieben&lt;br /&gt;
|-&lt;br /&gt;
| Abhängigkeiten festhalten || Python-Version, venv-Verfahren und requirements-Datei || Jede externe Abhängigkeit wäre nachvollziehbar, derzeit sind es ausdrücklich keine&lt;br /&gt;
|-&lt;br /&gt;
| Fehler begründen || Protokoll eines absichtlich falsch platzierten CSV-Dokuments || Ursache wird von Symptom und Reparatur unterschieden&lt;br /&gt;
|-&lt;br /&gt;
| Schutzgrenzen || Kurzer Vergleich von venv und Sandbox || Keine fälschliche Gleichsetzung von Paketisolation und Systemsicherheit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Selbstkontrolle:&amp;#039;&amp;#039;&amp;#039; Erkläre die drei Kernentscheidungen mündlich anhand deiner Dateien. Ein erfolgreicher Programmstart allein genügt nicht. Bei fehlendem Python darfst du die Schritte als schriftliche Offline-Simulation mit begründetem Soll-Ergebnis nachweisen; praktische Ausführung ist dann noch nicht bestätigt.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= OER und Wikipedia =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stand der Quellenprüfung: 22.10.2026.&amp;#039;&amp;#039;&amp;#039; Versionsangaben beziehen sich auf die jeweils genannten Dokumente; Onlineseiten können aktualisiert werden. Die Quellen sind Recherchehilfen und ersetzen keine betriebliche Freigabe.&lt;br /&gt;
&lt;br /&gt;
* [https://docs.python.org/3/library/venv.html Python-Dokumentation: venv] – offizielle fortlaufend gepflegte Dokumentation, bei Recherche als Python 3.15.1 ausgewiesen; belegt Erstellung, Isolation, Interpreterpfade, Aktivierung und Nicht-Portabilität.&lt;br /&gt;
* [https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/ Python Packaging User Guide: pip und venv] – offizielle Packaging-Anleitung, fortlaufende Onlinefassung; Pakete, Installation und requirements.&lt;br /&gt;
* [https://nvlpubs.nist.gov/nistpubs/ai/NIST.AI.600-1.pdf NIST AI 600-1: Generative AI Profile] – Juli 2024, Rahmen für KI-Risikobetrachtung, &amp;#039;&amp;#039;&amp;#039;keine&amp;#039;&amp;#039;&amp;#039; Terminal- oder Sicherheitszertifizierung.&lt;br /&gt;
* [https://modelcontextprotocol.io/docs/2026-07-28/tutorials/security/security_best_practices MCP Security Best Practices] – dokumentierter Pfad 28.07.2026; Absicherung von MCP-Systemen, Übertragung der Grundprinzipien auf Risiken von Entwicklungswerkzeugen nur als didaktischer Vergleich.&lt;br /&gt;
* [https://moocwiki.org/index.php?curid=60548 Verlinkte MOOCwiki-Vorgrundlage] – vom Auftrag vorgegeben, beim externen Abruf nicht zugänglich; Inhalte nicht unabhängig verifiziert.&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Terminal_(Computer) Wikipedia: Terminal] – deutscher Überblick; für moderne Terminalemulatoren Begriffe ergänzend prüfen.&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Python_(Programmiersprache) Wikipedia: Python] – deutscher Überblick.&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://de.m.wikipedia.org/wiki/Python_(Programmiersprache) &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alternative ohne eingebettete Wikipedia:&amp;#039;&amp;#039;&amp;#039; Die obigen Quellenlinks und die Textdefinitionen dieses Kurses reichen für sämtliche Aufgaben aus.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Geprüfte freie Medien und Rechte ==&lt;br /&gt;
Die folgenden Commons-Dateiseiten wurden mit Urheber- und Lizenzangaben abgeglichen. Beim Einbetten wird keine Datei neu erzeugt. Beschreibungen an jeder Stelle dienen zugleich als Alt- bzw. Textalternative; Lizenzangaben beziehen sich auf die jeweilige Dateiseite.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Datei !! Commons-Quellseite !! Urheberschaft !! Lizenz&lt;br /&gt;
|-&lt;br /&gt;
| File:Animated GNU Bash Unix Shell Prompt.gif || [https://commons.wikimedia.org/wiki/File:Animated_GNU_Bash_Unix_Shell_Prompt.gif Dateiseite und Vorschau] || Kxxvii, 2016 || [https://creativecommons.org/publicdomain/zero/1.0/ CC0 1.0]&lt;br /&gt;
|-&lt;br /&gt;
| File:File Hierarchy.png || [https://commons.wikimedia.org/wiki/File:File_Hierarchy.png Dateiseite und Vorschau] || Peter Flass, 2023 || [https://creativecommons.org/licenses/by-sa/4.0/ CC BY-SA 4.0]&lt;br /&gt;
|-&lt;br /&gt;
| File:Python IDLE.png || [https://commons.wikimedia.org/wiki/File:Python_IDLE.png Dateiseite und Vorschau] || Bernardo Lansing, 2022 || [https://creativecommons.org/licenses/by-sa/4.0/ CC BY-SA 4.0]&lt;br /&gt;
|-&lt;br /&gt;
| File:Typing - Model F 122 1984.ogg || [https://commons.wikimedia.org/wiki/File:Typing_-_Model_F_122_1984.ogg Dateiseite und Hörprobe] || Raymangold22, 2016 || [https://creativecommons.org/publicdomain/zero/1.0/ CC0 1.0]&lt;br /&gt;
|}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Video:&amp;#039;&amp;#039;&amp;#039; [https://www.youtube.com/watch?v=PQH0uFxCvTU Python venv einfach erklärt], Programmieren mit Chris, veröffentlicht am 19.05.2024; Suchindex und Angaben zum Inhalt sind nachweisbar, unmittelbare Wiedergabeprüfung war nicht möglich. Der Inhalt ist optional, keine Weiterverwendungslizenz wird behauptet. Bei gesperrtem Video den dokumentierten Offline-Ablauf verwenden.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Verknüpfte Lernbereiche =&lt;br /&gt;
{| align=center&lt;br /&gt;
{{:D-Tab}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Softwareentwicklung]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# [[Terminal (Computer)]]&lt;br /&gt;
# [[Dateisystem]]&lt;br /&gt;
# [[Dateipfad]]&lt;br /&gt;
# [[Python (Programmiersprache)]]&lt;br /&gt;
# [[Virtuelle Umgebung]]&lt;br /&gt;
# [[Paketverwaltung]]&lt;br /&gt;
# [[Softwaredokumentation]]&lt;br /&gt;
# [[Informationssicherheit]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Sprache:Deutsch]]&lt;br /&gt;
[[Category:Locale:de-DE]]&lt;br /&gt;
[[Category:Informatik]]&lt;br /&gt;
[[Category:Softwareentwicklung]]&lt;br /&gt;
[[Category:Berufsausbildung]]&lt;br /&gt;
[[Category:Python]]&lt;br /&gt;
[[Category:IT-Sicherheit]]&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= aiMOOC-Projekte =&lt;br /&gt;
[[Category:AI_MOOC]] [[Category:GPT aiMOOC]]&lt;br /&gt;
{{MT}}&lt;/div&gt;</summary>
		<author><name>Glanz</name></author>
	</entry>
</feed>