scikit-learn / sklearn-pypi-package

27 stars 11 forks source link

The 'sklearn' PyPI package is Deprecated #35

Closed Mustaq-Ahmed16 closed 10 months ago

Mustaq-Ahmed16 commented 10 months ago

use pip install scikit-learn rather than pip install sklearn replace sklearn by scikit-learn in your pip requirements files (requirements.txt, setup.py, setup.cfg, Pipfile, etc ...) if the sklearn package is used by one of your dependencies it would be great if you take some time to track which package uses sklearn instead of scikit-learn and report it to their issue tracker as a last resort, set the environment variable SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True to avoid this error If the previous advice does not cover your use case, feel free to open an issue about it.

Reason for the deprecation :- sklearn package on PyPI exists to prevent malicious actors from using the sklearn package, since sklearn (the import name) and scikit-learn (the project name) are sometimes used interchangeably. scikit-learn is the actual package name and should be used with pip, e.g. for:

pip commands: pip install scikit-learn pip requirement files (requirements.txt, setup.py, setup.cfg, Pipfile, etc ...) At the time of writing (October 2022) sklearn downloads is about 1/5 of the scikit-learn downloads on PyPI so a lot of people are using it.

There are some edge cases with the way the PyPI sklearn package is implemented:

pip install sklearn==1.1.3 will say that the 1.1.3 version does not exist, which is confusing. The only available version at the time of writing of sklearn is 0.0. pip uninstall sklearn will actually not uninstall scikit-learn, you can still do import sklearn afterwards it can be confusing to have both sklearn and scikit-learn in the pip list output, prompting questions like "why do I have scikit-learn 1.1.3 and sklearn 0.0, and what does it even mean"?

adrinjalali commented 10 months ago

And that's why we have deprecated sklearn on pypi.