class: center, middle  # 3 Lösungen für Python-Probleme ### Oder: Der Weg in die Abhängigkeitshölle ist mit Schlangen gepflastert ### Hauke Goos-Habermann #### https://goos-habermann.de --- ### Über mich - Entwickler des
Softwareverteilungssystems m23
- Organisator der
Kieler Open Source und Linux Tage
-
Dienstleister zu m23, Linux und Freier Software
- Softwareentwicklung (PHP, BASH, C/C++, JS, Python und was sonst so gebraucht wird...) - Administration - Schulungen - Support - Beratung - quasi **alles**, *was mit Linux zu tun hat* - Wöchentlicher Livestream *"Jean und Hauke Show"* auf https://www.youtube.com/c/LinuxGuides - Community-Video-Serie *"Nicht der Weisheit letzter Schluß"* auf
tube.tchncs.de
und
YouTube
mit **beruflichen** oder **privaten Projekten** - Ist manchmal ein Schlangenbändiger. Tsssssssssss --- ### Das Kartenhaus  Viele Python-Projekte setzen eine **fest definierte Version** des **Python-Interpreters** voraus, denn schon bei kleinen **Versions-Abweichungen** können sich **Funktionen anders verhalten** oder gänzlich **fehlen**. Neben dieser Python-Version müssen eine Reihe von **Python-Bibliotheken** in exakt aufeinander abgestimmten Versionen vorliegen. Der **C/C++/etc.-Code** einiger dieser Bibliotheken wird direkt auf dem eigenen Rechner **kompiliert**, was die entsprechenden **Compiler** und **Entwicklungspakete** benötigt. Die **Versionkombinationen** eines Projektes **beißen** sich oft mit denen eines anderen. Je nach Projekt braucht es dann auch noch **passende Treiber** und **Systembibliotheken** (z.B. für CUDA). --- ### Lösungsmöglichkeit 1: venv  Wenn die **System-Python-Version** schon **paßt**, aber **nicht** die **Bibliotheken** und/oder Ihr **mehrere Python-Projekte** installieren möchtet, so benötigt Ihr ein **
Python-venv
**, eine abgeschlossene Umgebung, in der Ihr Abhängigkeiten installiert ohne andere Projekte zu stören. ```bash # Viruellen Python-Umgebung erstellen und aktivieren python3 -m venv venv source venv/bin/activate # Paketmanager aktualisieren pip3 install -U pip # Abhängigkeiten installieren pip3 install torch torchvision torchaudio\ --index-url https://download.pytorch.org/whl/cu126 pip3 install -r requirements.txt ``` --- ### Lösungsmöglichkeit 2: Pinokio  Sollte das nicht gehen, so könnt Ihr für **KI-Projekte**
Pinokio
ausprobieren, das über Skripte Installationen durchführt. Pinokio verwendet dazu auch zum jeweiligen Projekt **passende Python-Versionen** und **Bibliotheken**, **stolpert** allerdings **relativ häufig** über andere Abhängigkeiten und Fehler in den Projekten. Aber wenn es klappt, seid Ihr damit **schnell am Ziel** ;-) --- ### Lösungsmöglichkeit 3: Miniforge  **
Miniforge
** ist eine **
freie Python-Sammlung
** mit dem conda-Paketmanager, worüber Python-Umgebungen in vielen Versionen installiert werden können. ```bash # Installationsskript/Daten herunterladen wget https://github.com/conda-forge/miniforge/releases/\ download/25.11.0-1/Miniforge3-25.11.0-1-Linux-x86_64.sh # Ausführbar machen & im Unterverzeichnis "miniforge3" installieren chmod +x Miniforge3-25.11.0-1-Linux-x86_64.sh ./Miniforge3-25.11.0-1-Linux-x86_64.sh -b -p "$(pwd)/miniforge3" # Skript zum Starten der conda-Umgebung schreiben & laden "$(pwd)/miniforge3/bin/conda" shell.bash hook > conda-env.sh . conda-env.sh # Neue mit conda und Python 3.10 anlegen und aktivieren conda create -y --name venv python=3.10 conda activate venv # Dinge tun # conda-Umgebung deaktivieren conda deactivate ``` --- ### Miniforge-Startskript  Nach dem Installieren könnt Ihr ein **Startskript schreiben**, das die conda-Umgebung lädt und das eigentliche Projekt startet: ```bash echo '#!/bin/bash # conda-Umgebung laden . conda-env.sh # conda-Umgebung aktivieren conda activate venv # Optimiertes Aufteilen des GPU-Speichers export PYTORCH_CUDA_ALLOC_CONF="max_split_size_mb:128" # Projekt starten ./xxx.sh'> start.sh # Skript ausführbar machen chmod +x start.sh ``` --- ### Und wenn es dann noch immer nicht geht?  **Auftretende Fehlermeldungen *exakt*** in einer Suchmaschine suchen, um evtl. Lösungen (fehlende Biblotheken, Codefehler, etc.) zu finden. Im **Bugtracker/Issue** des Projektes nach dem **Problem suchen** und ggf. als **Bug einstellen**. --- class: center, middle ### Informationen zu mir und meinen Dienstleistungen, m23, ... ### https://goos-habermann.de