Geonode logo
Geonode Team

Geonode Team

Aktualisiert: 7. Oktober 2026

Veröffentlicht: 02.09.2026

So installieren Sie scikit-learn (alle Methoden)

`pip install scikit-learn` lautet die Antwort. Der Grund, warum diese Frage so oft gestellt wird, ist, dass sich der Importname und der Paketname unterscheiden und die Eingabe des Importnamens absichtlich fehlschlägt. Dieser Fehler ist kein Bug. Auf PyPI gibt es ein Platzhalter-Paket, dessen einzige Aufgabe darin besteht, einen Fehler auszulösen und sich selbst zu erklären, und es existiert aus einem Sicherheitsgrund, den es zu verstehen lohnt. Dieser Leitfaden behandelt alle Installationswege, die Abhängigkeitsanforderungen der aktuellen Version sowie die Fehler, die anschließend auftreten können.

Wir haben hier im Grunde nichts damit zu tun: Wir sind Geonode und verkaufen Proxys, was nichts mit der Installation einer Python-Bibliothek zu tun hat. Die einzige Schnittstelle ist einen Satz wert – wenn pip install in einer Unternehmensumgebung hängen bleibt, handelt es sich in der Regel um einen Proxy, den Ihr Netzwerk benötigt und den pip nicht kennt, und die Lösung lautet pip install --proxy oder die üblichen Umgebungsvariablen. Dieser Fall wird am Ende behandelt. Alles andere hier erfordert weder Infrastruktur noch einen Kauf.

Die kurze Antwort

python -m venv sklearn-env
source sklearn-env/bin/activate          # Windows: sklearn-env\Scripts\activate
pip install -U scikit-learn

Oder mit conda:

conda create -n sklearn-env -c conda-forge scikit-learn
conda activate sklearn-env

Die offizielle Dokumentation stellt beide Möglichkeiten vor und betont ausdrücklich die Bedeutung der Umgebung: „Die virtuelle Umgebung ist optional, wird jedoch dringend empfohlen, um mögliche Konflikte mit anderen Paketen zu vermeiden.“

Sie fügt einen Hinweis hinzu, der viele Nutzer immer wieder überrascht: „Sie sollten immer daran denken, die Umgebung Ihrer Wahl zu aktivieren, bevor Sie einen Python-Befehl ausführen, wenn Sie eine neue Terminalsitzung starten.“ Sehr viele Meldungen vom Typ „Gestern hat es noch funktioniert“ sind auf ein neues Terminal zurückzuführen, in dem keine Umgebung aktiviert ist.

Warum „pip install sklearn“ fehlschlägt

Die mit Abstand häufigste Frage in diesem Zusammenhang lautet: „Warum funktioniert das nicht?“, und die Antwort lautet: „Das ist beabsichtigt.“

„sklearn“ ist der Import-Name. „scikit-learn“ ist der Paket-Name. Wenn Sie Ersteres in „pip“ eingeben, wird ein Platzhalter installiert, dessen einziger Zweck darin besteht, Sie davon abzuhalten.

Die Beschreibung dieses Platzhalters auf PyPI ist eindeutig: „veraltetes sklearn-Paket, verwende stattdessen scikit-learn“, mit der Anweisung, „pip install scikit-learn anstelle von pip install sklearn zu verwenden“ und „sklearn in deinen pip-Anforderungsdateien durch scikit-learn zu ersetzen“.

Der Grund dafür liegt in der Lieferkette und wird in der Dokumentation klar dargelegt:

Das Paket „sklearn“ auf PyPI existiert, um böswillige Akteure daran zu hindern, das Paket „sklearn“ zu verwenden, da „sklearn“ (der Importname) und „scikit-learn“ (der Projektname) manchmal synonym verwendet werden.

Mit anderen Worten: Die Betreuer haben den leicht zu verwechselnden Namen für sich beansprucht, damit niemand anderes dies tun kann. Angesichts der vielen Nutzer, die diesen Namen eingeben, war dies eine sinnvolle Maßnahme.

Das Paket dokumentiert drei Sonderfälle, die Sie kennen sollten, falls Sie darauf stoßen:

  • „pip install sklearn==1.1.3“ gibt an, dass die Version 1.1.3 nicht existiert, was verwirrend ist – der Platzhalter verfügt nur über seine eigenen Versionsnummern.
  • „pip uninstall sklearn“ deinstalliert „scikit-learn“ tatsächlich nicht; Sie können anschließend weiterhin „import sklearn“ ausführen.
  • Wenn beide in „pip list“ vorhanden sind, ist das verwirrend, aber normal, falls Sie beide versehentlich installiert haben.

Es gibt einen Ausweg – die Einstellung „SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True“ – und dieser wird als „letzter Ausweg“ beschrieben. Wenn Sie darauf zurückgreifen müssen, liegt die eigentliche Ursache fast immer darin, dass eine Ihrer Abhängigkeiten „sklearn“ in ihren Anforderungen aufführt. Es lohnt sich, dem Rat des Platzhalters selbst zu folgen: „Verfolgen Sie nach, welches Paket „sklearn“ anstelle von „scikit-learn“ verwendet, und melden Sie dies an dessen Issue-Tracker.“

Schreiben Sie in Ihren eigenen Dateien immer scikit-learn. Schreiben Sie in Ihrem Code immer import sklearn. Diese Asymmetrie bleibt bestehen.

Anforderungen

Aus den Paket-Metadaten der aktuellen Version, Stand: September 2026.

scikit-learn 1.9.0 wurde am 2. Juni 2026 veröffentlicht und erfordert Python 3.11 oder höher.

Die Laufzeitabhängigkeiten:

AbhängigkeitMindestversion
NumPy1.24.1
SciPy1.10.0
joblib1.4.0
threadpoolctl3.5.0
narwhals2.0.1

Zwei Anmerkungen zu dieser Tabelle.

** „narwhals“ ist eine relativ neue Ergänzung** und taucht daher nicht in älterer Dokumentation oder in Tutorials auf, die auf früheren Versionen basieren. Wenn Sie Abhängigkeiten manuell festlegen, anstatt sie von pip auflösen zu lassen, ist dies diejenige, die Sie am ehesten übersehen werden.

Die Python-Mindestanforderungen ändern sich. Die Abhängigkeitstabelle auf der Installationsseite spiegelt die jeweilige Version wider, für die sie dokumentiert ist, und die Anforderungen sind in den letzten Versionen gestiegen. Wenn Sie eine ältere Python-Version verwenden, wird pip eine ältere Version von scikit-learn einbinden, anstatt einen Fehler zu melden – was in der Regel kein Problem darstellt und gelegentlich die Erklärung für eine fehlende Funktion ist, von der Sie gelesen haben.

Optionale Extras sind für Benchmarks, Dokumentation, Beispiele und Tests deklariert und beziehen matplotlib, pandas, polars, pyarrow und andere Bibliotheken ein. Sie benötigen keines davon, um die Bibliothek zu nutzen.

Installation ohne virtuelle Umgebung

Manchmal möchte man tatsächlich eine systemweite Installation durchführen, wobei es dabei eine Warnung gibt.

Die Dokumentation äußert sich speziell zu Linux ganz klar: „Insbesondere unter Linux wird davon abgeraten, pip-Pakete neben den vom Paketmanager der Distribution verwalteten Paketen (apt, dnf, pacman…) zu installieren.“

Der Grund dafür ist, dass sowohl pip als auch der Paketmanager Ihrer Distribution davon ausgehen, dass ihnen die Dateien im Verzeichnis „site-packages“ des System-Python gehören, und wenn sie sich nicht einig sind, führt dies zu einer Python-Installation, die sich auf seltsame Weise verhält, die schwer zu entwirren ist. Bei neueren Distributionen lehnt pip dies mit einem Fehler wegen einer „extern verwalteten Umgebung“ rundweg ab – das Paketverwaltungs-Ökosystem verhindert genau dies.

Solltest du auf diesen Fehler stoßen, sind die Optionen in der Reihenfolge ihrer Präferenz: Verwende eine virtuelle Umgebung, nutze pipx für Befehlszeilentools, verwende das distributionsspezifische Paket „python3-sklearn“, falls vorhanden, oder – sofern du weißt, was du tust – überschreibe die Einstellung mit --break-system-packages, einem Flag, dessen Name dich davon abhalten soll.

Unter macOS und Windows ist der Druck geringer, aber der Ratschlag gilt weiterhin. Eine virtuelle Umgebung pro Projekt ist in zehn Sekunden eingerichtet und beugt einer ganzen Reihe von Problemen vor.

Überprüfung der Installation

In der Dokumentation sind die Befehle aufgeführt, und es lohnt sich, diese dreißig Sekunden für ihre Ausführung aufzuwenden.

python -m pip show scikit-learn    # version and install location
python -m pip freeze              # everything in the environment
python -c "import sklearn; sklearn.show_versions()"

Mit conda:

conda list scikit-learn
conda list

sklearn.show_versions()

sollte verwendet werden, wenn ein Problem gemeldet wird. Der Befehl gibt die scikit-learn-Version, die Python-Version und den Build sowie die Versionen des zugrunde liegenden numerischen Stacks aus – genau die Informationen, nach denen jeder Maintainer als Erstes fragen wird.

Der Installationsort unter pip show

ist einen Blick wert, wenn sich etwas seltsam verhält. Wenn er auf eine andere Umgebung verweist als die, in der Sie sich Ihrer Meinung nach befinden, haben Sie Ihre Antwort: import sklearn

findet die Installation, die im Pfad an erster Stelle steht, und das ist möglicherweise nicht die, die Sie gerade installiert haben.

conda versus pip

Beides funktioniert. Die Wahl ist vor allem dann von Bedeutung, wenn Sie beide miteinander kombinieren – was Sie nicht ohne Weiteres tun sollten.

Verwenden Sie conda, wenn Sie bereits über eine conda-Umgebung verfügen, wenn Sie bestimmte kompilierte numerische Bibliotheken benötigen oder wenn Sie auf einer Plattform arbeiten, auf der andernfalls eine Kompilierung aus dem Quellcode erforderlich wäre. Bevorzugen Sie „conda-forge“ als Kanal, wie es in der offiziellen Anleitung empfohlen wird.

Verwenden Sie pip, wenn Sie sich in einer gewöhnlichen virtuellen Python-Umgebung befinden, was auf die meisten Projekte zutrifft. Für die gängigen Plattformen werden Wheels bereitgestellt, sodass nichts kompiliert werden muss und die Installation nur Sekunden dauert.

Vermischen Sie die beiden nicht unüberlegt in einer Umgebung. Wenn Sie ein Paket mit conda installieren und anschließend eine Abhängigkeit mit pip aktualisieren, entsteht eine Umgebung, in der die Metadaten von conda nicht mehr der Realität entsprechen, und die daraus resultierenden Fehler sind schwer zu diagnostizieren. Wenn es unbedingt sein muss, installieren Sie zunächst alles, was Sie können, mit conda und verwenden Sie erst danach pip für das, was conda nicht bietet.

Es gibt einen praktischen Anhaltspunkt dafür, in welcher Umgebung Sie sich befinden: Wenn which python auf ein Verzeichnis der conda-Umgebung verweist, verwenden Sie conda für diese Umgebung.

Häufige Fehler nach der Installation

ModuleNotFoundError: No module named 'sklearn' nach einer erfolgreichen Installation. Fast immer liegt es an der falschen Umgebung – einem anderen Terminal, einem anderen Interpreter oder einem Notebook-Kernel, der auf einen anderen Speicherort verweist. Überprüfen Sie dies mit:

import sys; print(sys.executable)

und vergleichen Sie die Ergebnisse mit der Umgebung, in der Sie die Installation durchgeführt haben. Insbesondere in Jupyter wird der Kernel unabhängig von der Terminalumgebung ausgewählt, und eine Installation in der einen Umgebung hat keine Auswirkungen auf die andere. Der Befehl „%pip install scikit-learn“ innerhalb des Notebooks installiert die Bibliothek in die Umgebung des Kernels, was die zuverlässige Lösung darstellt.

ImportError mit Hinweis auf NumPy oder eine Binärinkompatibilitätsproblematik. In der Regel handelt es sich um eine Inkompatibilität zwischen kompilierten Versionen, die meist durch ein eigenständiges Upgrade von NumPy verursacht wird. Eine gemeinsame Neuinstallation beider Komponenten behebt das Problem:

pip install --force-reinstall --no-cache-dir numpy scipy scikit-learn

Ein Build-Versuch, bei dem versucht wird, aus dem Quellcode zu kompilieren. Das bedeutet, dass kein Wheel zu Ihrer Plattform und Python-Version passte – häufig handelt es sich dabei um eine sehr neue Python-Version, bevor Wheels veröffentlicht wurden, oder um eine ungewöhnliche Architektur. Ein paar Wochen zu warten oder eine etwas ältere Python-Version zu verwenden, ist einfacher als die Installation einer Build-Toolchain.

Sowohl „sklearn“ als auch „scikit-learn“ in „pip list“. Sie haben den Platzhalter irgendwann installiert. Das Entfernen ist unbedenklich: pip uninstall sklearn. Wie in der Dokumentation vermerkt, wird dadurch „scikit-learn“ tatsächlich nicht deinstalliert.

Warnungen bezüglich Threads oder „threadpoolctl“. scikit-learn nutzt dies zur Verwaltung der Thread-Pools der zugrunde liegenden BLAS-Bibliotheken. Die explizite Einstellung von „OMP_NUM_THREADS“ behebt die meisten dieser Probleme und ist ohnehin empfehlenswert in Containern, wo eine uneingeschränkte Bibliothek ungeachtet Ihres CPU-Limits problemlos einen Thread pro Host-CPU erstellt.

Versionen für die Reproduzierbarkeit festlegen

Die Installation erfolgt einmalig; die gleiche Installation auch im nächsten Monat beizubehalten, ist die größere Herausforderung, und es lohnt sich, dies bereits im Voraus einzurichten, bevor man es benötigt.

Halten Sie die Versionen in einer Anforderungsdatei fest, nicht nur im Kopf. Ein einfacher Befehl „pip install scikit-learn

“ heute und derselbe Befehl in sechs Monaten liefern unterschiedliche Versionen, und die API von scikit-learn ändert sich zwischen den Minor-Releases – Schätzer erhalten neue Parameter, Standardwerte verschieben sich, und gelegentlich wird nach einem Deprecation-Zyklus etwas entfernt:

scikit-learn==1.9.0
numpy==2.3.1
scipy==1.16.0

Fixieren Sie auch den numerischen Stack, nicht nur scikit-learn. Die meisten Reproduzierbarkeitsfehler in diesem Ökosystem entstehen dadurch, dass sich NumPy oder SciPy unterhalb eines festgelegten scikit-learn ändern, da die kompilierten Schnittstellen zwischen ihnen enger sind, als die Versionsangaben vermuten lassen. Die Spitze des Baums festzulegen und den Rest schweben zu lassen, ist die Anordnung, bei der es am ehesten zu Fehlern kommt.

Generieren Sie die Datei aus einer funktionierenden Umgebung, anstatt sie manuell zu schreiben:

pip freeze > requirements.txt

Dadurch werden alle Abhängigkeiten erfasst, einschließlich transitiver Abhängigkeiten – genau das, was Sie für eine Anwendung benötigen. Für eine Bibliothek, die Sie veröffentlichen, geben Sie stattdessen Versionsbereiche an und überlassen Sie die Auflösung den Nutzern – eine Bibliothek, die exakte Versionen festlegt, lässt sich mit nichts anderem kombinieren.

Halten Sie die Versionen zusammen mit Ihren Ergebnissen fest. Modellausgaben hängen von der Bibliotheksversion ab, und ein gespeichertes Modell ist nicht auf beliebige Versionen übertragbar – das Entpacken eines Schätzers, der mit einer anderen Version gespeichert wurde, kann zu Warnungen führen, fehlschlagen oder sich stillschweigend anders verhalten. Das Speichern der Ausgabe von „sklearn.show_versions()

“ neben jedem persistierten Modell verwandelt ein zukünftiges Rätsel in eine einfache Nachschlageaufgabe.

Und seien Sie skeptisch gegenüber „pickled“ Modellen als Speicherformat. Sie enthalten die Klassenstruktur der Version, mit der sie erstellt wurden, weshalb sie bei Upgrades nicht mehr funktionieren, und sie führen beim Laden Code aus – ein „Pickle“ aus einer nicht vertrauenswürdigen Quelle ist also eher eine willkürliche Codeausführung als eine Datendatei. Bei allem, was langfristig bestehen bleibt, sollten Sie ein für den Austausch konzipiertes Format bevorzugen oder zumindest den Trainingscode und die Daten aufbewahren, damit das Modell neu erstellt werden kann.

Installation hinter einem Unternehmens-Proxy

Dies ist der einzige Fall, in dem unser Thema relevant ist und das Symptom eindeutig ist.

Wenn pip install

hängen bleibt und dann eine Zeitüberschreitung auftritt, anstatt sofort mit einem Fehler bei der Namensauflösung abzubrechen, benötigt Ihr Netzwerk wahrscheinlich einen Proxy, den pip nicht kennt.

pip install --proxy http://user:password@proxy.example.com:9000 scikit-learn

Oder über die Umgebungsvariablen, was auch für conda und die meisten anderen Tools gilt:

export https_proxy=http://user:password@proxy.example.com:9000
export http_proxy=http://user:password@proxy.example.com:9000

Zwei Dinge, die hier häufig schiefgehen.

Sonderzeichen im Passwort müssen prozentkodiert werden. Ein „@

“ oder „:

“ in einer Proxy-URL teilt die Zeichenfolge an der falschen Stelle, was trotz korrekter Anmeldedaten zu einem Authentifizierungsfehler führt.

Das Abfangen von TLS-Verbindungen unterbricht die Zertifikatsüberprüfung. Unternehmensproxys beenden häufig die TLS-Verbindung, woraufhin pip das Zertifikat ablehnt, da es von der Zertifizierungsstelle Ihrer Organisation und nicht von einer öffentlichen Stelle ausgestellt wurde. Die richtige Lösung besteht darin, pip auf das CA-Bundle Ihrer Organisation zu verweisen:

pip config set global.cert /path/to/corporate-ca.pem

Die verlockende Lösung ist „--trusted-host pypi.org

“, wodurch die Überprüfung für diesen Host deaktiviert wird. Machen Sie sich vor der Verwendung bewusst, was das bedeutet: Sie entscheiden sich damit dafür, jedes Zertifikat zu akzeptieren, das für den Server vorgelegt wird, von dem Sie ausführbaren Code herunterladen.

Für conda befindet sich die entsprechende Konfiguration in „.condarc

“ unter „proxy_servers

“ und „ssl_verify

“.

Häufig gestellte Fragen

Wie installiere ich scikit-learn?

pip install -U scikit-learn in einer virtuellen Umgebung oder conda create -n sklearn-env -c conda-forge scikit-learn mit conda. In der Dokumentation wird dringend empfohlen, eine virtuelle Umgebung zu verwenden, um Konflikte mit anderen Paketen zu vermeiden.

Warum schlägt „pip install sklearn“ fehl?

Weil „sklearn“ der Importname und nicht der Paketname ist. Auf PyPI gibt es ein Platzhalterpaket, dessen einziger Zweck darin besteht, einen Fehler auszulösen und Sie weiterzuleiten – seine Betreuer haben diesen verwirrenden Namen bewusst gewählt, um zu verhindern, dass jemand mit böswilligen Absichten unter diesem Namen etwas veröffentlicht. Installieren Sie stattdessen „scikit-learn“.

Was ist der Unterschied zwischen „sklearn“ und „scikit-learn“?

„scikit-learn“ ist der Projekt- und Paketname, der mit pip und conda verwendet wird; „sklearn“ ist der Name, den Sie in „import“-Anweisungen verwenden. Diese Asymmetrie ist dauerhaft und der Grund für die Existenz des Platzhalter-Pakets.

Welche Python-Version benötigt scikit-learn?

Version 1.9.0, veröffentlicht im Juni 2026, erfordert Python 3.11 oder höher. Ältere scikit-learn-Versionen unterstützen ältere Python-Versionen, und pip wählt eine kompatible Version aus, anstatt einen Fehler zu melden – was manchmal der Grund dafür ist, dass eine Funktion, über die Sie gelesen haben, fehlt.

Warum erhalte ich nach der Installation einen „ModuleNotFoundError“?

Fast immer liegt es an der falschen Umgebung. Überprüfen Sie import sys; print(sys.executable) und vergleichen Sie dies mit dem Ort, an dem Sie die Installation durchgeführt haben. In Jupyter ist die Umgebung des Kernels von der Ihres Terminals getrennt – verwenden Sie %pip install scikit-learn innerhalb des Notebooks, um die Installation im Kernel durchzuführen.

Sollte ich pip oder conda verwenden?

pip in einer gewöhnlichen virtuellen Umgebung, was für die meisten Projekte geeignet ist und vorgefertigte Wheels in Sekundenschnelle installiert. conda, wenn Sie sich bereits in einer conda-Umgebung befinden oder bestimmte kompilierte numerische Bibliotheken benötigen. Vermeiden Sie es, beide in einer Umgebung zu mischen, da die Sichtweisen der beiden Paketmanager darauf voneinander abweichen.

Wie kann ich überprüfen, welche Version von scikit-learn ich habe?

Rufen Sie „python -m pip show scikit-learn“ auf, um die Version und den Installationsort anzuzeigen, oder „python -c "import sklearn; sklearn.show_versions()"“, um einen vollständigen Bericht einschließlich Python und des numerischen Stacks zu erhalten – diesen sollten Sie beifügen, wenn Sie ein Problem melden.

Wie installiere ich scikit-learn hinter einem Proxy?

Verwenden Sie pip install --proxy http://user:pass@host:port scikit-learn oder legen Sie http_proxy und https_proxy in Ihrer Umgebung fest, damit conda und andere Tools diese ebenfalls erkennen. Führen Sie eine Prozent-Kodierung für Sonderzeichen im Passwort durch und konfigurieren Sie das CA-Zertifikat Ihrer Organisation, anstatt die Überprüfung zu deaktivieren.

Fazit

Die Installation selbst erfolgt mit einem einzigen Befehl. Nahezu alle Schwierigkeiten bei diesem Thema sind auf zwei Dinge zurückzuführen, die nichts mit dem eigentlichen Code von scikit-learn zu tun haben.

Das erste ist der Name. „scikit-learn“ zum Installieren, „sklearn“ zum Importieren und ein Platzhalter-Paket mit einem verwirrenden Namen, das Sie zum Innehalten veranlasst und Ihnen erklärt, warum. Dieser Platzhalter ist ein kleiner Beitrag zu einer guten Supply-Chain-Hygiene, und der Fehler, den er auslöst, erfüllt seinen Zweck.

Der zweite Punkt sind die Umgebungen. Sehr viele Fehler – das Modul, das in einem neuen Terminal verschwindet, das Notebook, das das gerade Installierte nicht finden kann, der Importfehler nach einem unabhängigen Upgrade – sind ein und dasselbe Umgebungsproblem in unterschiedlicher Verkleidung. Eine virtuelle Umgebung pro Projekt, die bewusst aktiviert wird, verhindert fast alle diese Probleme, und „print(sys.executable)“ diagnostiziert den Rest mit einer einzigen Zeile.

Und wenn „pip“ hängen bleibt, anstatt eine Fehlermeldung auszugeben, überprüfen Sie zuerst Ihr Netzwerk und erst dann Python. Ein erforderlicher Proxy, den pip nicht kennt, führt zu einem Timeout statt zu einem Fehler – was eine verwirrende Art ist, etwas über die eigene Infrastruktur zu lernen.