Skip to content

Can't install on Python 3.12 #709

@daviddavo

Description

@daviddavo

I tried to install the lightfm package on Python 3.12

$ python -m venv venv
$ source venv/bin/activate
$ pip install lightfm
Collecting lightfm
  Using cached lightfm-1.17.tar.gz (316 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error

  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [20 lines of output]
      Traceback (most recent call last):
        File "/tmp/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/tmp/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
          return hook(config_settings)
                 ^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-lgz3q2o2/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 325, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=['wheel'])
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-lgz3q2o2/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 295, in _get_build_requires
          self.run_setup()
        File "/tmp/pip-build-env-lgz3q2o2/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 487, in run_setup
          super().run_setup(setup_script=setup_script)
        File "/tmp/pip-build-env-lgz3q2o2/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 311, in run_setup
          exec(code, locals())
        File "<string>", line 11, in <module>
      AttributeError: 'dict' object has no attribute '__LIGHTFM_SETUP__'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

I tried installing wheel and setuptools beforehand, and I get another different error:

Logs after installing setuptools and wheel
pip install lightfm
Collecting lightfm
  Using cached lightfm-1.17.tar.gz (316 kB)
  Preparing metadata (setup.py) ... done
Collecting numpy (from lightfm)
  Using cached numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (61 kB)
Collecting scipy>=0.17.0 (from lightfm)
  Using cached scipy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (60 kB)
Collecting requests (from lightfm)
  Using cached requests-2.31.0-py3-none-any.whl.metadata (4.6 kB)
Collecting scikit-learn (from lightfm)
  Using cached scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Collecting charset-normalizer<4,>=2 (from requests->lightfm)
  Using cached charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (33 kB)
Collecting idna<4,>=2.5 (from requests->lightfm)
  Using cached idna-3.7-py3-none-any.whl.metadata (9.9 kB)
Collecting urllib3<3,>=1.21.1 (from requests->lightfm)
  Using cached urllib3-2.2.1-py3-none-any.whl.metadata (6.4 kB)
Collecting certifi>=2017.4.17 (from requests->lightfm)
  Using cached certifi-2024.2.2-py3-none-any.whl.metadata (2.2 kB)
Collecting joblib>=1.2.0 (from scikit-learn->lightfm)
  Using cached joblib-1.4.2-py3-none-any.whl.metadata (5.4 kB)
Collecting threadpoolctl>=2.0.0 (from scikit-learn->lightfm)
  Using cached threadpoolctl-3.5.0-py3-none-any.whl.metadata (13 kB)
Using cached scipy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (38.2 MB)
Using cached numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.0 MB)
Using cached requests-2.31.0-py3-none-any.whl (62 kB)
Using cached scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB)
Using cached certifi-2024.2.2-py3-none-any.whl (163 kB)
Using cached charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (141 kB)
Using cached idna-3.7-py3-none-any.whl (66 kB)
Using cached joblib-1.4.2-py3-none-any.whl (301 kB)
Using cached threadpoolctl-3.5.0-py3-none-any.whl (18 kB)
Using cached urllib3-2.2.1-py3-none-any.whl (121 kB)
Building wheels for collected packages: lightfm
  Building wheel for lightfm (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [224 lines of output]
      /tmp/venv/lib/python3.12/site-packages/setuptools/dist.py:476: SetuptoolsDeprecationWarning: Invalid dash-separated options
      !!

              ********************************************************************************
              Usage of dash-separated 'description-file' will not be supported in future
              versions. Please use the underscore name 'description_file' instead.

              By 2024-Sep-26, you need to update your project and remove deprecated calls
              or your builds will no longer be supported.

              See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.
              ********************************************************************************

      !!
        opt = self.warn_dash_deprecation(opt, section)
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-312
      creating build/lib.linux-x86_64-cpython-312/lightfm
      copying lightfm/__init__.py -> build/lib.linux-x86_64-cpython-312/lightfm
      copying lightfm/_lightfm_fast.py -> build/lib.linux-x86_64-cpython-312/lightfm
      copying lightfm/cross_validation.py -> build/lib.linux-x86_64-cpython-312/lightfm
      copying lightfm/data.py -> build/lib.linux-x86_64-cpython-312/lightfm
      copying lightfm/evaluation.py -> build/lib.linux-x86_64-cpython-312/lightfm
      copying lightfm/lightfm.py -> build/lib.linux-x86_64-cpython-312/lightfm
      creating build/lib.linux-x86_64-cpython-312/lightfm/datasets
      copying lightfm/datasets/__init__.py -> build/lib.linux-x86_64-cpython-312/lightfm/datasets
      copying lightfm/datasets/_common.py -> build/lib.linux-x86_64-cpython-312/lightfm/datasets
      copying lightfm/datasets/movielens.py -> build/lib.linux-x86_64-cpython-312/lightfm/datasets
      copying lightfm/datasets/stackexchange.py -> build/lib.linux-x86_64-cpython-312/lightfm/datasets
      copying lightfm/_lightfm_fast_no_openmp.c -> build/lib.linux-x86_64-cpython-312/lightfm
      copying lightfm/_lightfm_fast_openmp.c -> build/lib.linux-x86_64-cpython-312/lightfm
      running build_ext
      building 'lightfm._lightfm_fast_openmp' extension
      creating build/temp.linux-x86_64-cpython-312
      creating build/temp.linux-x86_64-cpython-312/lightfm
      gcc -fno-strict-overflow -DNDEBUG -g -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -ffat-lto-objects -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -fPIC -I/tmp/venv/include -I/usr/include/python3.12 -c lightfm/_lightfm_fast_openmp.c -o build/temp.linux-x86_64-cpython-312/lightfm/_lightfm_fast_openmp.o -ffast-math -march=native -fopenmp
      lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_pf_7lightfm_20_lightfm_fast_openmp_9CSRMatrix_2__reduce_cython__’:
      lightfm/_lightfm_fast_openmp.c:3597:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       3597 |     __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_CSRMatrix); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
            |     ^~~~~~~~~~~~~~~~~~~~~~~~~
      In file included from /usr/include/python3.12/dictobject.h:90,
                       from /usr/include/python3.12/Python.h:64,
                       from lightfm/_lightfm_fast_openmp.c:22:
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c:3643:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       3643 |     __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_CSRMatrix); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
            |     ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_pf_7lightfm_20_lightfm_fast_openmp_11FastLightFM_2__reduce_cython__’:
      lightfm/_lightfm_fast_openmp.c:4491:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       4491 |     __Pyx_GetModuleGlobalName(__pyx_t_20, __pyx_n_s_pyx_unpickle_FastLightFM); if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 13, __pyx_L1_error)
            |     ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c:4537:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       4537 |     __Pyx_GetModuleGlobalName(__pyx_t_19, __pyx_n_s_pyx_unpickle_FastLightFM); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 15, __pyx_L1_error)
            |     ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_pf_7lightfm_20_lightfm_fast_openmp_2fit_warp’:
      lightfm/_lightfm_fast_openmp.c:7025:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       7025 |   __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 819, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c:7030:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       7030 |   __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 819, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c:7108:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       7108 |   __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 820, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_pf_7lightfm_20_lightfm_fast_openmp_4fit_warp_kos’:
      lightfm/_lightfm_fast_openmp.c:7922:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       7922 |   __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 950, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c:7927:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       7927 |   __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 950, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c:8005:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       8005 |   __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 951, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_pf_7lightfm_20_lightfm_fast_openmp_6fit_bpr’:
      lightfm/_lightfm_fast_openmp.c:8929:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       8929 |   __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1108, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c:8934:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       8934 |   __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1108, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c:9012:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       9012 |   __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1109, __pyx_L1_error)
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_pf___pyx_MemviewEnum___reduce_cython__’:
      lightfm/_lightfm_fast_openmp.c:14112:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      14112 |     __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
            |     ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c:14158:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      14158 |     __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
            |     ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_memview_slice’:
      lightfm/_lightfm_fast_openmp.c:19295:3: warning: ‘Py_OptimizeFlag’ is deprecated [-Wdeprecated-declarations]
      19295 |   if (unlikely(!Py_OptimizeFlag)) {
            |   ^~
      In file included from /usr/include/python3.12/Python.h:48:
      /usr/include/python3.12/cpython/pydebug.h:13:37: note: declared here
         13 | Py_DEPRECATED(3.12) PyAPI_DATA(int) Py_OptimizeFlag;
            |                                     ^~~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_get_tp_dict_version’:
      lightfm/_lightfm_fast_openmp.c:27791:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      27791 |     return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
            |     ^~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_get_object_dict_version’:
      lightfm/_lightfm_fast_openmp.c:27803:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      27803 |     return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
            |     ^~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_object_dict_version_matches’:
      lightfm/_lightfm_fast_openmp.c:27807:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      27807 |     if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
            |     ^~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx__GetModuleGlobalName’:
      lightfm/_lightfm_fast_openmp.c:27824:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      27824 |     __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
            |     ^~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_Raise’:
      lightfm/_lightfm_fast_openmp.c:28344:34: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘curexc_traceback’
      28344 |         PyObject* tmp_tb = tstate->curexc_traceback;
            |                                  ^~
      lightfm/_lightfm_fast_openmp.c:28347:19: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘curexc_traceback’
      28347 |             tstate->curexc_traceback = tb;
            |                   ^~
      lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_PyInt_AddObjC’:
      lightfm/_lightfm_fast_openmp.c:28981:51: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      28981 |         const digit* digits = ((PyLongObject*)op1)->ob_digit;
            |                                                   ^~
      lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_CLineForTraceback’:
      lightfm/_lightfm_fast_openmp.c:29295:9: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      29295 |         __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c:29295:9: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
      29295 |         __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_PyInt_As_int’:
      lightfm/_lightfm_fast_openmp.c:30607:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      30607 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      lightfm/_lightfm_fast_openmp.c:30662:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      30662 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_PyInt_As_long’:
      lightfm/_lightfm_fast_openmp.c:30803:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      30803 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      lightfm/_lightfm_fast_openmp.c:30858:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      30858 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_PyInt_As_char’:
      lightfm/_lightfm_fast_openmp.c:31037:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      31037 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      lightfm/_lightfm_fast_openmp.c:31092:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      31092 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_PyIndex_AsSsize_t’:
      lightfm/_lightfm_fast_openmp.c:31443:45: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
      31443 |     const digit* digits = ((PyLongObject*)b)->ob_digit;
            |                                             ^~
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions