print("Version:", sys.version.split()[0])Version: 3.12.14
print("in virtueller Umgebung:", sys.prefix != sys.base_prefix)in virtueller Umgebung: False
Vorwissen: Python-Grundlagen für die Sprache und Pakete und Umgebungen für venv, pip und conda. Die Programme auf dieser Seite laufen im Build nicht; ausgeführt ist nur, was Python über sich selbst verrät.
Die meisten Probleme mit Python-Umgebungen sind dasselbe Problem: Ein Paket wurde in das eine Python installiert und in einem anderen importiert. Auf einem gewöhnlichen Rechner liegen schnell drei davon, etwa das des Betriebssystems, eines aus Anaconda und eines in einer virtuellen Umgebung.
Welches gerade läuft, beantwortet Python selbst:
Version: 3.12.14
in virtueller Umgebung: False
sys.executable zeigt zusätzlich den vollständigen Pfad zum Interpreter. Er steht hier nicht, weil er vom Rechner abhängt, der diese Website baut. Auf dem eigenen Rechner ist er die erste Zeile, die bei einem Importfehler geprüft wird.
| python.org | Anaconda | Miniconda | Miniforge | |
|---|---|---|---|---|
| Enthält | nur Python und pip | Python, conda, Navigator, über 300 Pakete | Python und conda | Python, conda und mamba |
| Grösse | klein | mehrere Gigabyte | klein | klein |
| Pakete aus | PyPI | Anaconda-Kanal | Anaconda-Kanal | conda-forge |
| Geeignet | schlanke Projekte mit venv |
Einstieg mit Oberfläche, alles sofort da | conda ohne Ballast | conda ohne Lizenzfrage |
Anaconda ist bequem, weil pandas, NumPy, Jupyter und Matplotlib nach der Installation sofort da sind. Der Preis ist die Grösse, und für Organisationen ab einer bestimmten Grösse ist der Anaconda-Kanal kostenpflichtig. Miniforge bezieht die Pakete aus dem freien Kanal conda-forge und umgeht das.
Eine Regel verhindert die meisten Verwicklungen: nicht in die Basisumgebung installieren. Für jedes Projekt eine eigene Umgebung anlegen, mit conda create oder python -m venv. Die Basisumgebung bleibt, wie sie installiert wurde, und lässt sich im Notfall nicht versehentlich zerstören.
Ein Notebook besteht aus Zellen mit Code oder Text. JupyterLab ist die heutige Oberfläche dafür, das klassische Jupyter Notebook die ältere, schlankere. Beide öffnen dieselben .ipynb-Dateien.
Gerechnet wird nicht in der Oberfläche, sondern im Kernel, einem laufenden Python-Prozess im Hintergrund. Jupyter selbst kann in einer anderen Umgebung installiert sein als der Kernel, der rechnet. Genau daraus entsteht der klassische Fehler: pip install pandas im Terminal meldet Erfolg, import pandas im Notebook scheitert, weil das Terminal ein anderes Python meint als der Kernel.
Die sichere Installation aus dem Notebook heraus trifft immer den Kernel:
Die Zahl in eckigen Klammern links neben einer Zelle, etwa [7], gibt an, als wievielte sie ausgeführt wurde. Ein Notebook, dessen Zahlen nicht von oben nach unten steigen, wurde kreuz und quer ausgeführt, und sein Ergebnis hängt davon ab.
Ein Beispiel: Zelle 1 setzt x = 10, Zelle 2 rechnet x * 2. Wird danach Zelle 1 auf x = 5 geändert, aber nicht neu ausgeführt, zeigt Zelle 2 weiterhin 20. Wer das Notebook später von oben ausführt, bekommt 10.
Deshalb vor dem Speichern oder Weitergeben: Kernel > Restart Kernel and Run All Cells. Läuft das durch und zeigt dieselben Ergebnisse, ist das Notebook reproduzierbar.
VS Code öffnet Skripte und Notebooks gleichermassen, sobald die Erweiterungen Python und Jupyter installiert sind. Unten rechts in der Statusleiste steht, welches Python verwendet wird; ein Klick darauf wählt ein anderes. Das ist die Stelle, an der ein Importfehler meistens gelöst wird.
Google Colab ist ein Jupyter-Notebook im Browser, ohne Installation und mit Zugang zu GPUs. Zwei Eigenheiten muss man kennen:
from google.colab import drive; drive.mount("/content/drive").pip install seaborn im Terminal meldet Erfolg, import seaborn im Notebook scheitert mit ModuleNotFoundError. Was ist die wahrscheinlichste Ursache?
%pip install seaborn im Notebook installiert in den Kernel.
Ein Notebook zeigt korrekte Ergebnisse. Nach Restart Kernel and Run All Cells bricht es in der Mitte ab. Was sagt das?
Projektumgebung mit conda anlegen und in Jupyter verfügbar machen
Danach erscheint auswertung in JupyterLab und VS Code als wählbarer Kernel.
Dasselbe mit venv
Herausfinden, welches Python ein Notebook verwendet
JupyterLab starten
Das Arbeitsverzeichnis ist der Ordner, aus dem der Befehl gestartet wurde.
Registrierte Kernel auflisten und einen entfernen