227

I want to import sklearn but there is no module apparently:

ModuleNotFoundError: No module named 'sklearn'

I am using Anaconda and Python 3.6.1; I have checked everywhere but still can't find answers.

When I use the command: conda install scikit-learn should this not just work?
Where does anaconda install the package?

I was checking the frameworks in my python library and there was nothing about sklearn only numpy and scipy.

Please help, I am new to using python packages especially via anaconda.

2
  • Did you try using the Ananconda navigator for installing the package. If you have created different environments, make sure you launch the correct notebook. Commented Apr 29, 2020 at 20:51
  • When using the terminal this may happen by accidentaly executing your module as module.py instead of python module.py
    – Javier TG
    Commented May 24, 2023 at 18:40

16 Answers 16

260

You can just use pip for installing packages, even when you are using anaconda:

pip install -U scikit-learn scipy matplotlib

This should work for installing the package.

And for Python 3.x just use pip3:

pip3 install -U scikit-learn scipy matplotlib
4
  • 2
    try appending sudo like below command. It worked for me sudo pip3 install -U scikit-learn
    – San
    Commented Nov 26, 2019 at 23:16
  • 8
    What is the meaning of -U?
    – keramat
    Commented Jun 24, 2020 at 10:12
  • 9
    @keramat -U means upgrade, so it will install the newest version if you have an older version (see stackoverflow.com/q/12435209/11063448) Commented Jun 29, 2020 at 18:40
  • to see which version of python you have, python --version Commented Jun 1, 2021 at 6:02
72

Will leave below two options that may help one solve the problem:

  1. Using conda

  2. Using pip

One might want to consider the notes at the end, specially before resorting to the 2nd option.


Option 1

If one wants to install it in the root and one follows the requirements - (Python (>= 2.7 or >= 3.4), NumPy (>= 1.8.2), SciPy (>= 0.13.3).) - the following should solve the problem

conda install scikit-learn

Alternatively, as mentioned here, one can specify the channel as follows

conda install -c anaconda scikit-learn

Let's say that one is working in the environment with the name ML.

Then the following should solve one's problem:

conda install -n ML scikit-learn

# or

conda install -n ML -c anaconda scikit-learn

Option 2

If the above doesn't work, on Anaconda Prompt one can also use pip (here's how to pip install scikit-learn), so the following may help

pip install scikit-learn

However, consider the last note below before proceeding.


Notes:

  • When using Anaconda, one needs to be aware of the environment that one is working.

    Then, in Anaconda Prompt, one needs to run the following

    conda $command -n $ENVIRONMENT_NAME $IDE/package/module
    

    $command - Command that one intends to use (consult documentation for general commands)

    $ENVIRONMENT NAME - The name of one's environment (if one is working in the root, conda $command $IDE/package/module is enough)

    $IDE/package/module - The name of the IDE or package or module

  • If one needs to install/update packages, the logic is the same as mentioned in the introduction. If you need more information on Anaconda Packages, check the documentation.

  • What is the flag -c.

  • pip doesn't manage dependencies the same way conda does and can, potentially, damage one's installation.

20

If you are using Ubuntu 18.04 or higher with python3.xxx then try this command

$ sudo apt install python3-sklearn 

then try your command. hope it will work

19

I did the following:

import sys
!{sys.executable} -m pip install sklearn
2
  • 1
    Liked your solution. Just update it to: import sys !{sys.executable} -m pip install scikit-learn Commented Jan 18, 2023 at 23:46
  • The more user-friendly & universal (works in JupyterLite now) version of the magic install commands handle targeting the proper environment in a less overwhelming way for an easier experience for users. The equivalent would simply be %pip install sklearn to run inside a notebook. No need for the import. See here for more about the magic install commands added to insure installation occurs in the proper environment where the kernel is running that underlies the active ipynb file.
    – Wayne
    Commented Sep 14, 2023 at 12:37
18

On Windows, I had python 3+ version. pip version - 22.3.1

I had installed:

pip install sklearn

But, it seems it is deprecated with scikit-learn.

So, I did:

pip install scikit-learn

And, it worked!!!

3

I've tried a lot of things but finally, including uninstall with the automated tools. So, I've uninstalled manually scikit-learn.

sudo rm -R /home/ubuntu/.local/lib/python3.6/site-packages/sklearn
sudo rm -R /home/ubuntu/.local/lib/python3.6/site-packages/scikit_learn-0.20.0-py3.6.egg-info

And re-install using pip

sudo pip3.6 install -U scikit-learn

Hope that can help someone else!

3

This happened to me, I tried all the possible solutions with no luck!

Finaly I realized that the problem was with Jupyter notebook environment, not with sklearn!

I solved the problem by re-installing Jupyter at the same environment as sklearn

the command is: conda install -c anaconda ipython. Done...

1
  • 1
    This. This worked like a charm. I had a fresh conda installation on W10. Installed tensorflow in a dedicated environment. Installed scikit-learn in the same environment. Could not import it. Ran conda install -c anaconda ipython in the environment and fixed the problem.
    – JoErNanO
    Commented Dec 10, 2021 at 11:01
3

The other name of sklearn in anaconda is scikit-learn. simply open your anaconda navigator, go to the environments, select your environment, for example tensorflow or whatever you want to work with, search for scikit_learn in the list of uninstalled packages, apply it and then you can import sklearn in your jupyter.

3

SOLVED:

The above did not help. Then I simply installed sklearn from within Jypyter-lab, even though sklearn 0.0 shows in 'pip list':

!pip install sklearn
import sklearn

What I learned later is that pip installs, in my case, packages in a different folder than Jupyter. This can be seen by executing:

import sys
print(sys.path)

Once from within Jupyter_lab notebook, and once from the command line using 'py notebook.py'.

In my case Jupyter list of paths where subfolders of 'anaconda' whereas Python list where subfolders of c:\users[username]...

2
  • The first part of this post is outdated. For modern Jupyter, users should use %pip install sklearn to run inside a notebook. The magic install commands were added to insure the installation occurs in the proper environment where the kernel is running that underlies the active ipynb file. See here for more about it. Use of install commands in the notebook with the exclamation point doesn't insure the proper environment and can sometimes cause issues. See ...
    – Wayne
    Commented Sep 15, 2023 at 14:34
  • <continued> the second paragraph here to get a better sense about how the exclamation point use with installs can lead to issues and confusion. (Note: At present this doesn't hold for Google Colab because what is currently used was branched off from the open source Jupyter project before the magic install commands were added. So only use of the exclamation point with pip is possible there & indeed they set up the system to insure it will work effectively.)
    – Wayne
    Commented Sep 15, 2023 at 14:37
1

Cause

Conda and pip install scikit-learn under ~/anaconda3/envs/$ENV/lib/python3.7/site-packages, however Jupyter notebook looks for the package under ~/anaconda3/lib/python3.7/site-packages.

Therefore, even when the environment is specified to conda, it does not work.

conda install -n $ENV scikit-learn # Does not work

Solution

pip 3 install the package under ~/anaconda3/lib/python3.7/site-packages.

Verify

After pip3, in a Jupyter notebook.

import sklearn
sklearn.__file__

~/anaconda3/lib/python3.7/site-packages/sklearn/init.py'

1
  • This is indeed the CORRECT and sensible answer, out of all! Thanks, really. EDIT: this answer works fine for Win10 and Ubuntu & MacOS (till date versions); have tried on all. Commented Nov 13, 2022 at 6:17
1

Causes -your jupyter notebook might be importing the sklearn and other libraries from the another the location(path) than the libraries from conda or pip.

MY Problem In my case, My jupyter notebook was importing the libraries for snap manager. Since, I install jupyter using the snap instead of other ways.

You can check where other libraries are being imported in jupyter using code:

import cv2 as cv
print(cv.__file__)

Solution So , I uninstall jupyter notebook and then install notebook using conda.

 sudo snap remove jupyter

conda install -c conda-forge notebook

1

I had the same problem. The issue is when we work on multiple anaconda environments, not all packages are installed in all environments. you can check your conda environment by writing the following code in anaconda prompt:

conda env list

then you can check the packages installed in each environment :

conda list -n NAME_OF_THE_ENVIRONMENT

for me, the environment that I was working with , was missing sklearn, although the package was installed in the other environments.

therefore, I just simply installed sklearn package in that particular environment

conda install -n NAME_OF_THE_ENVIRONMENT scikit-learn

and the issue was resolved

0

install these ==>> pip install -U scikit-learn scipy matplotlib if still getting the same error then , make sure that your imoprted statment should be correct. i made the mistike while writing ensemble so ,(check spelling) its should be >>> from sklearn.ensemble import RandomForestClassifier

0

I had the same issue as the author, and ran into the issue with and without Anaconda and regardless of Python version. Everyone's environment is different, but after resolving it for myself I think that in some cases it may be due to having multiple version of Python installed. Each installed Python version has its own \Lib\site-packages\ folder which can contain a unique set of modules for that Python version, and where the IDE looks into folder path that doesn't have scikit-learn in it.

One way to try solve the issue: you might clear your system of all other Python versions and their cached/temp files/system variables, and then only have one version of Python installed anywhere. Then install the dependencies Numpy and Scipy, and finally Scikit-learn.

More detailed steps:

  1. Uninstall all Python versions and their launchers (e.g. from Control Panel in Windows) except the one version you want to keep. Delete any old Python version folders in the Python directory --uninstalling doesn't remove all files.
  2. Remove other Python versions from your OS' Environment Variables (both under the system and user variables sections)
  3. Clear temporary files. For example, for Windows, delete all AppData Temp cache files (in C:\Users\YourUserName\AppData\Local\Temp). In addition, you could also do a Windows disk cleanup for other temporary files, and then reboot.
  4. If your IDE supports it, create a new virtual environment in Settings, then set your only installed Python version as the interpreter.
  5. In your IDE, install the dependencies Scipy and Numpy from the module list first, then install Scikit-Learn.

As some others have suggested, the key is making sure your environment is set up correctly where everything points to the correct library folder on your computer where the Sklearn package is located. There are a few ways this can be resolved. My approach was more drastic, but it turns out that I had a very messy Python setup on my system so I had to start fresh.

0

Using Anaconda-navigator UI environment

When running Anaconda-navigator:

  • Choose the 'Environments' tab on the left and create a new environment (e.g. ML - see Gonçalo Peres answer above, I made one called 'CourseraML').

  • Set Python version 3.7 (for Coursera course Applied Machine Learning in Python). Also include R.

  • Then find modules to install using the 'not installed' drop-down menu item. Search for each module needed in the search bar and select. sklearn is part of scikit-learn. Select it and install (it should find all relevant dependencies). Modules needed for Applied ML course: seaborn, numpy, scikit-learn, pandas, matplotlib

  • You'll need to restart Jupyter Notebook and reopen your file.

Command line version of above:

conda install -n CourseraML seaborn scikit-learn pandas numpy matplotlib graphviz
0
  1. Open Terminal.
  2. Activate your environment cmd: conda activate [myEnvironment-replaceYours]
  3. Observe: - (myEnvironment) myPc@JOHN:~$
  4. Type command : (myEnvironment) myPc@JOHN:~$ conda install yourMissingPackageName.
  5. Re-run your python code which inside myEnvironment in jupyter notebook.

Follow same steps for the package missing error. It will work 100% for sure.

Not the answer you're looking for? Browse other questions tagged or ask your own question.