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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions