Ga naar hoofdinhoud

De foutmelding No module named 'sklearn' in Python troubleshooten

Leer hoe je de ModuleNotFoundError: No module named 'sklearn' snel oplost met onze gedetailleerde, makkelijk te volgen online gids.
· 5 min lezen

Verken met AI

Scikit-learn, vaak afgekort tot sklearn, is een veelgebruikte Python-bibliotheek voor data-analyse en modelleertaken, waaronder machine learning. Nieuwe gebruikers die graag met sklearn aan de slag willen, kunnen echter gefrustreerd raken wanneer ze een onbekende foutmelding krijgen die lastig te verhelpen is.

In deze tutorial bekijken we hoe je de foutmelding No module named 'sklearn' oplost, zodat we weer verder kunnen met het gebruiken van sklearn’s uitgebreide verzameling algoritmen en tools voor data-analyse en modellering. Onderweg leren we ook algemenere vaardigheden voor het troubleshooten van pakketinstallaties, waardoor we betere Python-programmeurs worden. Wil je je geheugen opfrissen over het scikit-learn-pakket, bekijk dan gerust eerst onze Scikit-Learn Cheat Sheet.

De foutmelding No module named 'sklearn' in Python begrijpen

Laten we naar de volgende afbeelding kijken. Hier probeerden we sklearn te importeren en kregen we een ModuleNotFoundError-exceptie terug.

Voorbeeld in Python-omgeving ModuleNotFoundError: No module named 'sklearn'ModuleNotFoundError in Python-omgeving


Zoals de naam al doet vermoeden, is ModuleNotFoundError een specifiek type ImportError dat aangeeft dat Python een bepaalde module niet kan vinden. In dit geval is dat de module sklearn, maar het had elke module kunnen zijn, zoals numpy of pandas.

Onze cursus Introduction to Data Science in Python bevat lessen met veel voorbeelden van hoe je modules zoals numpy importeert en ermee werkt.  

Veelvoorkomende oorzaken van de Python ModuleNotFoundError-melding

Je kunt de foutmelding No module named 'sklearn' om verschillende veelvoorkomende redenen tegenkomen. De belangrijkste zijn: 

  • Sklearn niet geïnstalleerd: De meest voorkomende oorzaak is dat scikit-learn niet is geïnstalleerd in onze Python-omgeving.

  • Onjuiste installatie: Soms is scikit-learn wel geïnstalleerd, maar niet correct, wat leidt tot problemen bij het importeren van de bibliotheekmodules.

  • Problemen met de omgevingsconfiguratie of Python-pad: Dit gebeurt het vaakst bij werken in een virtuele omgeving of het gebruik van een andere Python-interpreter.

Gelukkig lossen we dit waarschijnlijk op door stap voor stap te werk te gaan. Laten we doorgaan. 

De Python ModuleNotFoundError-foutmelding troubleshooten

Controleer de installatie van scikit-learn

De eerste stap is controleren of scikit-learn correct is geïnstalleerd in onze Python-omgeving. Dat kan met de volgende opdracht in onze terminal of opdrachtprompt:

py -m pip list

Dit levert een alfabetische lijst op van alle bibliotheken die in onze Python-omgeving zijn geïnstalleerd. Scrol door de lijst en controleer of scikit-learn ertussen staat.

Voorbeeldlijst van geïnstalleerde Python-pakketten in Visual Studio Code, gevonden met pipVoorbeeldlijst van geïnstalleerde pakketten


Als we na het scrollen ontdekken dat scikit-learn niet is geïnstalleerd, kunnen we het installeren met het pip- of conda-commando, afhankelijk van onze omgeving:

pip install scikit-learn
conda install scikit-learn

Voor meer informatie over het gebruik van pakketmanagers zoals pip, bekijk onze Pip Python Tutorial for Package Management. 

Herstart de Python-kernel

Als we in een Jupyter Notebook of een IDE zoals Spyder werken, is de volgende stap om te overwegen onze Python-kernel te herstarten. We doen dit omdat we weten dat, zelfs als we scikit-learn zojuist hebben (her)geïnstalleerd, de wijziging mogelijk niet direct beschikbaar is in onze huidige interactieve sessie. Door de kernel te herstarten worden de omgeving en bibliotheekpaden opnieuw geladen. Dit is een eenvoudige, essentiële stap die allerlei fouten kan verhelpen.

Onze Python Jupyter-kernel herstarten in Visual Studio CodeOnze Jupyter-kernel herstarten

Controleer omgevingsvariabelen en Python-pad

Vervolgens moeten we ervoor zorgen dat onze Python-omgeving correct is geconfigureerd om het scikit-learn-pakket te vinden. Deze stap is cruciaal omdat Python zo in de juiste mappen zoekt naar onze geïnstalleerde scikit-learn-package.

Controleer hiervoor de omgevingsvariabele PYTHONPATH en kijk of deze de map bevat waar scikit-learn is geïnstalleerd. Dat kan met de volgende code in ons Python-script of in de interpreter:

import sys
print(sys.path)

Door import sys uit te voeren gevolgd door print(sys.path), zien we de mappen die Python momenteel doorzoekt. Als het pad naar de map waar scikit-learn staat niet in onze lijst voorkomt, kan Python scikit-learn niet vinden en importeren.

Tot slot kunnen we verifiëren dat de gebruikte Python-interpreter overeenkomt met de omgeving waarin scikit-learn is geïnstalleerd. Volg onze gedetailleerde tutorial om te leren hoe je een data science-omgeving opzet op je computer. 

Installeer scikit-learn opnieuw

Als niets anders werkt, overweeg dan om scikit-learn opnieuw te installeren om eventuele installatieproblemen te verhelpen. Het is mogelijk dat het bestand beschadigd is geraakt tijdens het downloaden of installeren door netwerkproblemen, onderbrekingen of schijffouten. Ook kan het zijn dat er dependency-conflicten waren door eerdere installaties.

We kunnen scikit-learn deïnstalleren met pip of conda en het daarna opnieuw installeren voor een schone installatie. 

pip uninstall scikit-learn

pip install scikit-learn
conda uninstall scikit-learn

conda install scikit-learn

Installatie en omgevingsinstellingen verifiëren

Als laatste stap, zodra we denken dat we de No module named 'sklearn' error hebben opgelost, willen we wellicht verifiëren dat scikit-learn correct is geïnstalleerd en dat onze omgeving goed is geconfigureerd, voor de zekerheid.

Dat kan door scikit-learn te importeren in een Python-script of -interpreter en te controleren op importfouten.

import sklearn

print(sklearn.__version__)

Als we geen fouten tegenkomen, is scikit-learn correct geïnstalleerd en kun je het gaan gebruiken in je machinelearningprojecten!

Conclusie

De foutmelding No module named 'sklearn' kan frustrerend zijn, maar met de juiste stappen los je het snel op en kun je terug naar je machine-learningtaken. 

Ik moedig je aan om meer te leren over de onderliggende theorie van machine learning en enkele gangbare modellen, zoals k-means clustering, logistische regressie of svm. Je kunt ook best practices voor coderen leren om in de toekomst frustrerende foutmeldingen te voorkomen.

Amberle McKee

Auteur

Amberle McKee

Ik ben gepromoveerd en heb 13 jaar ervaring met het werken met data in een biologische onderzoeksomgeving. Ik maak software in verschillende programmeertalen, waaronder Python, MATLAB en R. Ik deel met plezier mijn liefde voor leren met de wereld.

Onderwerpen

Gerelateerd