[Python] How to install scikit-surprise from the ground up

Discussão em 'Python' iniciado por Stack, Janeiro 17, 2025.

  1. Stack

    Stack Membro Participativo

    I'm a colleague student and I'm trying to install scikit-surprise but I encountered errors after errors. I have install Microsoft Visual C++ 2015-2022, install all the packages (numpy, wheel, ...), used Microsoft Visual Studio installer to install requirements, using anaconda to update and install scikit-surprise but it still returns an error and I cannot import surprise in my python code. The error message is:

    Collecting scikit-surprise
    Using cached scikit-surprise-1.1.3.tar.gz (771 kB)
    Preparing metadata (setup.py) ... done
    Requirement already satisfied: joblib>=1.0.0 in c:\users\name\appdata\local\programs\python\python312\lib\site-packages (from scikit-surprise) (1.4.0)
    Requirement already satisfied: numpy>=1.17.3 in c:\users\name\appdata\local\programs\python\python312\lib\site-packages (from scikit-surprise) (1.26.4)
    Requirement already satisfied: scipy>=1.3.2 in c:\users\name\appdata\local\programs\python\python312\lib\site-packages (from scikit-surprise) (1.13.0)
    Building wheels for collected packages: scikit-surprise
    Building wheel for scikit-surprise (setup.py) ... error
    error: subprocess-exited-with-error

    × python setup.py bdist_wheel did not run successfully.
    │ exit code: 1
    ╰─> [129 lines of output]
    C:\Users\name\AppData\Local\Temp\pip-install-yp9x09a7\scikit-surprise_27597a36d9db4afaaf94b2c07d1b972f\setup.py:65: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated.
    !!

    ********************************************************************************
    Requirements should be satisfied by a PEP 517 installer.
    If you are using pip, you can try `pip install --use-pep517`.
    ********************************************************************************

    !!
    dist.Distribution().fetch_build_eggs(["numpy>=1.17.3"])
    running bdist_wheel
    running build
    running build_py
    creating build
    creating build\lib.win-amd64-cpython-312
    creating build\lib.win-amd64-cpython-312\surprise
    copying surprise\accuracy.py -> build\lib.win-amd64-cpython-312\surprise
    copying surprise\builtin_datasets.py -> build\lib.win-amd64-cpython-312\surprise
    copying surprise\dataset.py -> build\lib.win-amd64-cpython-312\surprise
    copying surprise\dump.py -> build\lib.win-amd64-cpython-312\surprise
    copying surprise\reader.py -> build\lib.win-amd64-cpython-312\surprise
    copying surprise\trainset.py -> build\lib.win-amd64-cpython-312\surprise
    copying surprise\utils.py -> build\lib.win-amd64-cpython-312\surprise
    copying surprise\__init__.py -> build\lib.win-amd64-cpython-312\surprise
    copying surprise\__main__.py -> build\lib.win-amd64-cpython-312\surprise
    creating build\lib.win-amd64-cpython-312\surprise\model_selection
    copying surprise\model_selection\search.py -> build\lib.win-amd64-cpython-312\surprise\model_selection
    copying surprise\model_selection\split.py -> build\lib.win-amd64-cpython-312\surprise\model_selection
    copying surprise\model_selection\validation.py -> build\lib.win-amd64-cpython-312\surprise\model_selection
    copying surprise\model_selection\__init__.py -> build\lib.win-amd64-cpython-312\surprise\model_selection
    creating build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    copying surprise\prediction_algorithms\algo_base.py -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    copying surprise\prediction_algorithms\baseline_only.py -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    copying surprise\prediction_algorithms\knns.py -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    copying surprise\prediction_algorithms\predictions.py -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    copying surprise\prediction_algorithms\random_pred.py -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    copying surprise\prediction_algorithms\__init__.py -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    running egg_info
    writing scikit_surprise.egg-info\PKG-INFO
    writing dependency_links to scikit_surprise.egg-info\dependency_links.txt
    writing entry points to scikit_surprise.egg-info\entry_points.txt
    writing requirements to scikit_surprise.egg-info\requires.txt
    writing top-level names to scikit_surprise.egg-info\top_level.txt
    reading manifest file 'scikit_surprise.egg-info\SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    adding license file 'LICENSE.md'
    writing manifest file 'scikit_surprise.egg-info\SOURCES.txt'
    C:\Users\name\AppData\Local\Programs\Python\Python312\Lib\site-packages\setuptools\command\build_py.py:207: _Warning: Package 'surprise.prediction_algorithms' is absent from the `packages` configuration.
    !!

    ********************************************************************************
    ############################
    # Package would be ignored #
    ############################
    Python recognizes 'surprise.prediction_algorithms' as an importable package[^1],
    but it is absent from setuptools' `packages` configuration.

    This leads to an ambiguous overall configuration. If you want to distribute this
    package, please make sure that 'surprise.prediction_algorithms' is explicitly added
    to the `packages` configuration field.

    Alternatively, you can also rely on setuptools' discovery methods
    (for example by using `find_namespace_packages(...)`/`find_namespace:`
    instead of `find_packages(...)`/`find:`).

    You can read more about "package discovery" on setuptools documentation page:

    - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

    If you don't want 'surprise.prediction_algorithms' to be distributed and are
    already explicitly excluding 'surprise.prediction_algorithms' via
    `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
    you can try to use `exclude_package_data`, or `include-package-data=False` in
    combination with a more fine grained `package-data` configuration.

    You can read more about "package data files" on setuptools documentation page:

    - https://setuptools.pypa.io/en/latest/userguide/datafiles.html


    [^1]: For Python, any directory (with suitable naming) can be imported,
    even if it does not contain any `.py` files.
    On the other hand, currently there is no concept of package data
    directory, all directories are treated like packages.
    ********************************************************************************

    !!
    check.warn(importable)
    copying surprise\similarities.c -> build\lib.win-amd64-cpython-312\surprise
    copying surprise\similarities.pyx -> build\lib.win-amd64-cpython-312\surprise
    copying surprise\prediction_algorithms\co_clustering.c -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    copying surprise\prediction_algorithms\matrix_factorization.c -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    copying surprise\prediction_algorithms\optimize_baselines.c -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    copying surprise\prediction_algorithms\slope_one.c -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    copying surprise\prediction_algorithms\co_clustering.pyx -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    copying surprise\prediction_algorithms\matrix_factorization.pyx -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    copying surprise\prediction_algorithms\optimize_baselines.pyx -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    copying surprise\prediction_algorithms\slope_one.pyx -> build\lib.win-amd64-cpython-312\surprise\prediction_algorithms
    running build_ext
    building 'surprise.similarities' extension
    creating build\temp.win-amd64-cpython-312
    creating build\temp.win-amd64-cpython-312\Release
    creating build\temp.win-amd64-cpython-312\Release\surprise
    "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.39.33519\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -IC:\Users\name\AppData\Local\Programs\Python\Python312\Lib\site-packages\numpy\core\include -IC:\Users\name\AppData\Local\Programs\Python\Python312\include -IC:\Users\name\AppData\Local\Programs\Python\Python312\Include "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.39.33519\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" /Tcsurprise/similarities.c /Fobuild\temp.win-amd64-cpython-312\Release\surprise/similarities.obj
    similarities.c
    C:\Users\name\AppData\Local\Programs\Python\Python312\Lib\site-packages\numpy\core\include\numpy\npy_1_7_deprecated_api.h(14) : Warning Msg: Using deprecated NumPy API, disable it with #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
    surprise/similarities.c(15478): warning C4996: 'Py_OptimizeFlag': deprecated in 3.12
    surprise/similarities.c(24414): error C2039: 'curexc_traceback': is not a member of '_ts'
    C:\Users\name\AppData\Local\Programs\Python\Python312\include\cpython/pystate.h(115): note: see declaration of '_ts'
    surprise/similarities.c(24417): error C2039: 'curexc_traceback': is not a member of '_ts'
    C:\Users\name\AppData\Local\Programs\Python\Python312\include\cpython/pystate.h(115): note: see declaration of '_ts'
    surprise/similarities.c(24531): warning C4013: '_PyUnicode_Ready' undefined; assuming extern returning int
    surprise/similarities.c(25020): error C2039: 'ob_digit': is not a member of '_longobject'
    C:\Users\name\AppData\Local\Programs\Python\Python312\include\cpython/longintrepr.h(87): note: see declaration of '_longobject'
    surprise/similarities.c(26982): error C2039: 'ob_digit': is not a member of '_longobject'
    C:\Users\name\AppData\Local\Programs\Python\Python312\include\cpython/longintrepr.h(87): note: see declaration of '_longobject'
    surprise/similarities.c(27037): error C2039: 'ob_digit': is not a member of '_longobject'
    C:\Users\name\AppData\Local\Programs\Python\Python312\include\cpython/longintrepr.h(87): note: see declaration of '_longobject'
    surprise/similarities.c(27254): error C2039: 'ob_digit': is not a member of '_longobject'
    C:\Users\name\AppData\Local\Programs\Python\Python312\include\cpython/longintrepr.h(87): note: see declaration of '_longobject'
    surprise/similarities.c(27309): error C2039: 'ob_digit': is not a member of '_longobject'
    C:\Users\name\AppData\Local\Programs\Python\Python312\include\cpython/longintrepr.h(87): note: see declaration of '_longobject'
    surprise/similarities.c(27450): error C2039: 'ob_digit': is not a member of '_longobject'
    C:\Users\name\AppData\Local\Programs\Python\Python312\include\cpython/longintrepr.h(87): note: see declaration of '_longobject'
    surprise/similarities.c(27505): error C2039: 'ob_digit': is not a member of '_longobject'
    C:\Users\name\AppData\Local\Programs\Python\Python312\include\cpython/longintrepr.h(87): note: see declaration of '_longobject'
    surprise/similarities.c(27856): error C2039: 'ob_digit': is not a member of '_longobject'
    C:\Users\name\AppData\Local\Programs\Python\Python312\include\cpython/longintrepr.h(87): note: see declaration of '_longobject'
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.39.33519\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
    [end of output]

    note: This error originates from a subprocess, and is likely not a problem with pip.
    ERROR: Failed building wheel for scikit-surprise
    Running setup.py clean for scikit-surprise
    Failed to build scikit-surprise
    ERROR: Could not build wheels for scikit-surprise, which is required to install pyproject.toml-based projects


    Can someone show me how to install scikit-surprise from the ground up?

    Continue reading...

Compartilhe esta Página