Tento instalar o scikit-learn==1.2.2 para o projeto Django e recebo este erro.
Collecting scikit-learn==1.2.2
Using cached scikit-learn-1.2.2.tar.gz (7.3 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... error
error: subprocess-exited-with-error
× Preparing metadata (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [36 lines of output]
Partial import of sklearn during the build process.
Traceback (most recent call last):
File "D:\Group Project Backend\Prediction\env\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module>
main()
File "D:\Group Project Backend\Prediction\env\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Group Project Backend\Prediction\env\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 149, in prepare_metadata_for_build_wheel
return hook(metadata_directory, config_settings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ASUS\AppData\Local\Temp\pip-build-env-_ej3exwe\overlay\Lib\site-packages\setuptools\build_meta.py", line 366, in prepare_metadata_for_build_wheel
self.run_setup()
File "C:\Users\ASUS\AppData\Local\Temp\pip-build-env-_ej3exwe\overlay\Lib\site-packages\setuptools\build_meta.py", line 487, in run_setup
super().run_setup(setup_script=setup_script)
File "C:\Users\ASUS\AppData\Local\Temp\pip-build-env-_ej3exwe\overlay\Lib\site-packages\setuptools\build_meta.py", line 311, in run_setup
exec(code, locals())
File "<string>", line 669, in <module>
File "<string>", line 663, in setup_package
File "<string>", line 597, in configure_extension_modules
File "C:\Users\ASUS\AppData\Local\Temp\pip-install-xv622fd3\scikit-learn_6df30b226b524d1caf236a6b94005795\sklearn\_build_utils\__init__.py", line 47, in cythonize_extensions
basic_check_build()
File "C:\Users\ASUS\AppData\Local\Temp\pip-install-xv622fd3\scikit-learn_6df30b226b524d1caf236a6b94005795\sklearn\_build_utils\pre_build_helpers.py", line 82, in basic_check_build
compile_test_program(code)
File "C:\Users\ASUS\AppData\Local\Temp\pip-install-xv622fd3\scikit-learn_6df30b226b524d1caf236a6b94005795\sklearn\_build_utils\pre_build_helpers.py", line 38, in compile_test_program
ccompiler.compile(
File "C:\Users\ASUS\AppData\Local\Temp\pip-build-env-_ej3exwe\overlay\Lib\site-packages\setuptools\_distutils\_msvccompiler.py", line 343, in compile
self.initialize()
File "C:\Users\ASUS\AppData\Local\Temp\pip-build-env-_ej3exwe\overlay\Lib\site-packages\setuptools\_distutils\_msvccompiler.py", line 253, in initialize
vc_env = _get_vc_env(plat_spec)
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ASUS\AppData\Local\Temp\pip-build-env-_ej3exwe\overlay\Lib\site-packages\setuptools\msvc.py", line 230, in msvc14_get_vc_env
return _msvc14_get_vc_env(plat_spec)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ASUS\AppData\Local\Temp\pip-build-env-_ej3exwe\overlay\Lib\site-packages\setuptools\msvc.py", line 187, in _msvc14_get_vc_env
raise distutils.errors.DistutilsPlatformError("Unable to find vcvarsall.bat")
distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
`
Estou usando o python 3.12.2 na minha máquina Windows. Estou construindo um site de previsão de carreira usando React e Django. Uso vscode como meu IDE. Eu treino um modelo usando o google collab e ele usa a versão 1.2.2 do scikit-learn. Posso instalar outros pacotes como Django, Djangorestframework, mas não consigo instalar o scikit-learn. Estou instalando tudo em ambiente virtual.
O motivo do problema encontrado é que a construção do pacote scikit-learn a partir do código-fonte requer o Microsoft Visual C++ 14.0 ou superior. Instalar as ferramentas de construção necessárias é o primeiro passo para corrigir esse problema. Veja como fazer isso:
Instale as ferramentas de compilação do Microsoft C++: link
Atualize o pip e o setuptool.
pip install --upgrade pip setuptools
Instale o scikit-learn
pip instalar scikit-learn==1.2.2
A primeira versão que fornece rodas para Python 3.12 é o scikit-learn 1.4.0. Consulte https://pypi.org/project/scikit-learn/1.4.0/#files . Portanto, não use a versão antiga, use uma mais recente. Ou
pip install scikit-learn==1.4.2
simplesmentepip install scikit-learn
para o mais recente (atualmente 1,5).A versão 1.2.2 fornece versões até Python 3.11. Se você quiser usar 1.2.2, use Python mais antigo. Faça downgrade para Python 3.11.
O Scikit learn requer o compilador Microsoft Visual C++, pois inclui extensões C/C++ que precisam ser compiladas.
Instalador online do vsc++/16: Instalador online do Visual C++ 16
Instalador offline: Link do instalador offline
Execute o comando
pip install scikit-learn==1.2.2
novamente para reinstalar o scikit-learn.