skip to Main Content

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:usersnameappdatalocalprogramspythonpython312libsite-packages (from scikit-surprise) (1.4.0)
Requirement already satisfied: numpy>=1.17.3 in c:usersnameappdatalocalprogramspythonpython312libsite-packages (from scikit-surprise) (1.26.4)
Requirement already satisfied: scipy>=1.3.2 in c:usersnameappdatalocalprogramspythonpython312libsite-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:UsersnameAppDataLocalTemppip-install-yp9x09a7scikit-surprise_27597a36d9db4afaaf94b2c07d1b972fsetup.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 buildlib.win-amd64-cpython-312
      creating buildlib.win-amd64-cpython-312surprise
      copying surpriseaccuracy.py -> buildlib.win-amd64-cpython-312surprise
      copying surprisebuiltin_datasets.py -> buildlib.win-amd64-cpython-312surprise
      copying surprisedataset.py -> buildlib.win-amd64-cpython-312surprise
      copying surprisedump.py -> buildlib.win-amd64-cpython-312surprise
      copying surprisereader.py -> buildlib.win-amd64-cpython-312surprise
      copying surprisetrainset.py -> buildlib.win-amd64-cpython-312surprise
      copying surpriseutils.py -> buildlib.win-amd64-cpython-312surprise
      copying surprise__init__.py -> buildlib.win-amd64-cpython-312surprise
      copying surprise__main__.py -> buildlib.win-amd64-cpython-312surprise
      creating buildlib.win-amd64-cpython-312surprisemodel_selection
      copying surprisemodel_selectionsearch.py -> buildlib.win-amd64-cpython-312surprisemodel_selection
      copying surprisemodel_selectionsplit.py -> buildlib.win-amd64-cpython-312surprisemodel_selection
      copying surprisemodel_selectionvalidation.py -> buildlib.win-amd64-cpython-312surprisemodel_selection
      copying surprisemodel_selection__init__.py -> buildlib.win-amd64-cpython-312surprisemodel_selection
      creating buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      copying surpriseprediction_algorithmsalgo_base.py -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      copying surpriseprediction_algorithmsbaseline_only.py -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      copying surpriseprediction_algorithmsknns.py -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      copying surpriseprediction_algorithmspredictions.py -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      copying surpriseprediction_algorithmsrandom_pred.py -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      copying surpriseprediction_algorithms__init__.py -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      running egg_info
      writing scikit_surprise.egg-infoPKG-INFO
      writing dependency_links to scikit_surprise.egg-infodependency_links.txt
      writing entry points to scikit_surprise.egg-infoentry_points.txt
      writing requirements to scikit_surprise.egg-inforequires.txt
      writing top-level names to scikit_surprise.egg-infotop_level.txt
      reading manifest file 'scikit_surprise.egg-infoSOURCES.txt'
      reading manifest template 'MANIFEST.in'
      adding license file 'LICENSE.md'
      writing manifest file 'scikit_surprise.egg-infoSOURCES.txt'
      C:UsersnameAppDataLocalProgramsPythonPython312Libsite-packagessetuptoolscommandbuild_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 surprisesimilarities.c -> buildlib.win-amd64-cpython-312surprise
      copying surprisesimilarities.pyx -> buildlib.win-amd64-cpython-312surprise
      copying surpriseprediction_algorithmsco_clustering.c -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      copying surpriseprediction_algorithmsmatrix_factorization.c -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      copying surpriseprediction_algorithmsoptimize_baselines.c -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      copying surpriseprediction_algorithmsslope_one.c -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      copying surpriseprediction_algorithmsco_clustering.pyx -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      copying surpriseprediction_algorithmsmatrix_factorization.pyx -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      copying surpriseprediction_algorithmsoptimize_baselines.pyx -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      copying surpriseprediction_algorithmsslope_one.pyx -> buildlib.win-amd64-cpython-312surpriseprediction_algorithms
      running build_ext
      building 'surprise.similarities' extension
      creating buildtemp.win-amd64-cpython-312
      creating buildtemp.win-amd64-cpython-312Release
      creating buildtemp.win-amd64-cpython-312Releasesurprise
      "C:Program Files (x86)Microsoft Visual Studio2022BuildToolsVCToolsMSVC14.39.33519binHostX86x64cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -IC:UsersnameAppDataLocalProgramsPythonPython312Libsite-packagesnumpycoreinclude -IC:UsersnameAppDataLocalProgramsPythonPython312include -IC:UsersnameAppDataLocalProgramsPythonPython312Include "-IC:Program Files (x86)Microsoft Visual Studio2022BuildToolsVCToolsMSVC14.39.33519include" "-IC:Program Files (x86)Microsoft Visual Studio2022BuildToolsVCAuxiliaryVSinclude" "-IC:Program Files (x86)Windows Kits10include10.0.22621.0ucrt" "-IC:Program Files (x86)Windows Kits10\include10.0.22621.0\um" "-IC:Program Files (x86)Windows Kits10\include10.0.22621.0\shared" "-IC:Program Files (x86)Windows Kits10\include10.0.22621.0\winrt" "-IC:Program Files (x86)Windows Kits10\include10.0.22621.0\cppwinrt" /Tcsurprise/similarities.c /Fobuildtemp.win-amd64-cpython-312Releasesurprise/similarities.obj
      similarities.c
      C:UsersnameAppDataLocalProgramsPythonPython312Libsite-packagesnumpycoreincludenumpynpy_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:UsersnameAppDataLocalProgramsPythonPython312includecpython/pystate.h(115): note: see declaration of '_ts'
      surprise/similarities.c(24417): error C2039: 'curexc_traceback': is not a member of '_ts'
      C:UsersnameAppDataLocalProgramsPythonPython312includecpython/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:UsersnameAppDataLocalProgramsPythonPython312includecpython/longintrepr.h(87): note: see declaration of '_longobject'
      surprise/similarities.c(26982): error C2039: 'ob_digit': is not a member of '_longobject'
      C:UsersnameAppDataLocalProgramsPythonPython312includecpython/longintrepr.h(87): note: see declaration of '_longobject'
      surprise/similarities.c(27037): error C2039: 'ob_digit': is not a member of '_longobject'
      C:UsersnameAppDataLocalProgramsPythonPython312includecpython/longintrepr.h(87): note: see declaration of '_longobject'
      surprise/similarities.c(27254): error C2039: 'ob_digit': is not a member of '_longobject'
      C:UsersnameAppDataLocalProgramsPythonPython312includecpython/longintrepr.h(87): note: see declaration of '_longobject'
      surprise/similarities.c(27309): error C2039: 'ob_digit': is not a member of '_longobject'
      C:UsersnameAppDataLocalProgramsPythonPython312includecpython/longintrepr.h(87): note: see declaration of '_longobject'
      surprise/similarities.c(27450): error C2039: 'ob_digit': is not a member of '_longobject'
      C:UsersnameAppDataLocalProgramsPythonPython312includecpython/longintrepr.h(87): note: see declaration of '_longobject'
      surprise/similarities.c(27505): error C2039: 'ob_digit': is not a member of '_longobject'
      C:UsersnameAppDataLocalProgramsPythonPython312includecpython/longintrepr.h(87): note: see declaration of '_longobject'
      surprise/similarities.c(27856): error C2039: 'ob_digit': is not a member of '_longobject'
      C:UsersnameAppDataLocalProgramsPythonPython312includecpython/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?

2

Answers


  1. I am also facing the same issues.
    I will appreciate any assistance.
    Microsoft build tool version 14 and above

    Login or Signup to reply.
  2. C:UsersnameAppDataLocalProgramsPythonPython312includecpython/longintrepr.h(87): note: see declaration of '_longobject'
          surprise/similarities.c(27856): error C2039: 'ob_digit': is not a member of '_longobject'
    

    this is an incompatibility between the suprise source code surprise/similarities.c and an include file from python ...Python312includecpython/longintrepr.h

    So it looks like there is a mismatch between supported python versions and the one you have. And indeed, if we check scikit-suprise 1.1.3 on pypi, you can see that supported python versions only go up to 3.10. Nonetheless, the newest version 1.1.4 lists python 3.12 as a supported version, so you can

    a) try to install pip install scikit-suprise==1.1.4, or
    b) downgrade your python version to 3.10 and try again with your installation

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search