Übung zum Seminar "Mensch und Bot"
Dr. Raphael Wimmer
Sommersemester 2025
Überblick: 7. Mai 2025 - Diverses, Python
- Umgebungsvariablen und Pfade
- Welche Python-IDE soll ich verwenden?
- apt, pip, conda, virtualeenv (, docker) - Environments und Paketmanager für Python
- uv - die eierlegende Wollmilchsau
- Grundkonzepte Python
PATH
- Umgebungsvariablen: Key-Value-Paare, die vom OS innerhalb einer Shell den Programmen zur Verfügung gestellt werden.
- Anzeigen/setzen mit
export
(Linux) bzw.SET
(Windows) - PATH-Umgebungsvariable: wo liegen die ausführbaren Dateien
- Reihenfolge relevant - das erstbeste Executable mit passendem Namen wird genommen.
- (auch später relevant:
PYTHONPATH
)
Python IDEs
- jeder beliebige Text-Editor
- Jetbrains PyCharm (umfangreiche IDE speziell für Python)
- repl.it (kollaborative browser-basierte IDE)
- weitere?
PEP 8 - Style Guide für Python
- PEP: Python Enhancement Proposal - ein Vorschlag, wie die Sprache weiterentwickelt werden soll
- PEP 8 – Style Guide for Python Code](https://www.python.org/dev/peps/pep-0008/)
pycodestyle
: Kommandozeilentool, das Code auf PEP-8-Konformität prüft- Hier im Kurs: PEP-8-Regeln bitte einhalten (zwingend für Studienleistung), bis auf Regel zu max. Zeilenlänge
- Link-Tipp: Vortrag von Raymond Hettinger: Beyond PEP 8 -- Best practices for beautiful intelligible code
Paketmanagement in Python
Es gibt drei verbreitete Möglichkeiten, Python-Module zu installieren:
- Paketmanagement des Betriebssystems (z.B.
apt
unter Debian/Ubuntu Linux) pip
- Pythons Paketmanagerconda
- Paketmanagement der Anaconda-Distribution
Um für jede Anwendung separate Module zu installieren: virtual environments
Paketmanagement durch Betriebssystem
- Primär bei Linux-Distributionen, z.B. Debian/Ubuntu
apt install python3-matplotlib
- Vorteile: global verfügbar, sicher, vorkompilierte Binaries
- Nachteile: nicht immer aktuell, nicht alle Python-Pakete verfügbar, immer nur eine Paketversion installierbar
Paketmanagement mit pip
- Pakete werden aus dem Python Package Index (PyPI) installiert (PyPI enthält quasi alle Pakete)
pip3 install matplotlib
pip3 install -r requirements.txt
: Textdatei mit Paketnamen und ggf. Versionen.- Vorteile: global oder (default) lokal installierbar, immer aktuellste Version, quasi alle Pakete verfügbar.
- Nachteile: nicht zwingend robust/sicher, Kompilierungsschritt bei C-Erweiterungen notwendig
- Tool
pipx
: installiert Python-Programme in einer eigenen virtuellen Umgebung und fügt sie zum Pfad hinzu (Repo / Anleitung)
Paketmanagement mit conda
- Anaconda: Python-Distribution für Scientific Computing (multi-platform)
- Minimale Distribution: miniconda
conda
: package manager für Anaconda (Intro)- Alternative: Mamba
- Vorteile: sicher, robust, vorkompilierte Binaries, integrierte Unterstützung von virtual environments
- Nachteile: nicht immer aktuell, wenige Python-Pakete verfügbar, fügt Overhead (Ressourcen, Debugging) hinzu
Virtual Environments
- Grundidee: für jedes Projekt eine eigene Python-Installation (Doku)
- Funktionsweise: Überschreiben der Pfade zu Binaries, Bibliotheken in der aktuellen Shell
- Virtualenv im Unterverzeichnis
.env
anlegen:python3 -m venv .env
- Virtualenv aktivieren:
source .env/bin/activate
(Linux) /.env\Scripts\activate.bat
- deaktivieren durch Beenden der Shell
- Conda:
conda create --name myenv
/conda activate myenv
uv - die eierlegende Wollmilchsau
- Tool für gängiges Python-Projektmanagement (Doku
- sehr schnell (Rust, Caching)
- Wrapper für viele gängige Aktionen:
uv python install <Version>
- installiert Pythonuv init <Projektname>
- erzeugt Projektverzeichnis, initialisiert venv und Git.uv add <Package>
- fügt Paket zu Projekt hinzuuv run <script.py>
- führt Script in aktuellem venv ausuv pip <...>
/uv venv <...>
- wrappt pip/venv
Überblick: 21. Mai 2025 - Erste Chatbots
ELIZA
- Python-Quellcode: https://github.com/wadetb/eliza
- Eure Aufgaben:
- Code zum Laufen bringen
- Etwas an den Antworten ändern
- Ausgeben, was unter der Haube passiert (optional)
Eigener Chatbot
- Eure Aufgabe: schreibt einen eigenen Chatbot mit einer Heuristik
- notwendig: loops, ´input()/rawinput()´, evtl. regex oder String-Operationen
- Anforderungen: reagiert auf bestimmte Schlüsselwörter