lyst / lightfm

A Python implementation of LightFM, a hybrid recommendation algorithm.
Apache License 2.0
4.66k stars 679 forks source link

Can't install on Python 3.12 #709

Open daviddavo opened 1 month ago

daviddavo commented 1 month ago

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 ```
K-Winkles commented 1 month ago

Seconded.

`Collecting lightfm Using cached lightfm-1.17.tar.gz (316 kB) Preparing metadata (setup.py) ... done Requirement already satisfied: numpy in /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages (from lightfm) (1.26.4) Requirement already satisfied: scipy>=0.17.0 in /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages (from lightfm) (1.12.0) Requirement already satisfied: requests in /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages (from lightfm) (2.31.0) Requirement already satisfied: scikit-learn in /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages (from lightfm) (1.4.2) Requirement already satisfied: charset-normalizer<4,>=2 in /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages (from requests->lightfm) (3.3.2) Requirement already satisfied: idna<4,>=2.5 in /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages (from requests->lightfm) (3.6) Requirement already satisfied: urllib3<3,>=1.21.1 in /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages (from requests->lightfm) (2.2.1) Requirement already satisfied: certifi>=2017.4.17 in /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages (from requests->lightfm) (2024.2.2) Requirement already satisfied: joblib>=1.2.0 in /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages (from scikit-learn->lightfm) (1.2.0) Requirement already satisfied: threadpoolctl>=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages (from scikit-learn->lightfm) (3.4.0) 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 ╰─> [387 lines of output] Compiling without OpenMP support. /Library/Frameworks/Python.framework/Versions/3.12/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.macosx-10.9-universal2-cpython-312
  creating build/lib.macosx-10.9-universal2-cpython-312/lightfm
  copying lightfm/lightfm.py -> build/lib.macosx-10.9-universal2-cpython-312/lightfm
  copying lightfm/evaluation.py -> build/lib.macosx-10.9-universal2-cpython-312/lightfm
  copying lightfm/__init__.py -> build/lib.macosx-10.9-universal2-cpython-312/lightfm
  copying lightfm/_lightfm_fast.py -> build/lib.macosx-10.9-universal2-cpython-312/lightfm
  copying lightfm/data.py -> build/lib.macosx-10.9-universal2-cpython-312/lightfm
  copying lightfm/cross_validation.py -> build/lib.macosx-10.9-universal2-cpython-312/lightfm
  creating build/lib.macosx-10.9-universal2-cpython-312/lightfm/datasets
  copying lightfm/datasets/_common.py -> build/lib.macosx-10.9-universal2-cpython-312/lightfm/datasets
  copying lightfm/datasets/__init__.py -> build/lib.macosx-10.9-universal2-cpython-312/lightfm/datasets
  copying lightfm/datasets/movielens.py -> build/lib.macosx-10.9-universal2-cpython-312/lightfm/datasets
  copying lightfm/datasets/stackexchange.py -> build/lib.macosx-10.9-universal2-cpython-312/lightfm/datasets
  copying lightfm/_lightfm_fast_no_openmp.c -> build/lib.macosx-10.9-universal2-cpython-312/lightfm
  copying lightfm/_lightfm_fast_openmp.c -> build/lib.macosx-10.9-universal2-cpython-312/lightfm
  running build_ext
  building 'lightfm._lightfm_fast_no_openmp' extension
  creating build/temp.macosx-10.9-universal2-cpython-312
  creating build/temp.macosx-10.9-universal2-cpython-312/lightfm
  clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -O3 -Wall -arch arm64 -arch x86_64 -g -I/Library/Frameworks/Python.framework/Versions/3.12/include/python3.12 -c lightfm/_lightfm_fast_no_openmp.c -o build/temp.macosx-10.9-universal2-cpython-312/lightfm/_lightfm_fast_no_openmp.o -ffast-math
  lightfm/_lightfm_fast_no_openmp.c:3590:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_CSRMatrix); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
      ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:3636:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_CSRMatrix); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
      ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:4484:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
      __Pyx_GetModuleGlobalName(__pyx_t_20, __pyx_n_s_pyx_unpickle_FastLightFM); if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 13, __pyx_L1_error)
      ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:4530:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
      __Pyx_GetModuleGlobalName(__pyx_t_19, __pyx_n_s_pyx_unpickle_FastLightFM); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 15, __pyx_L1_error)
      ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:6958:3: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 813, __pyx_L1_error)
    ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:6963:3: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 813, __pyx_L1_error)
    ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:7041:3: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 814, __pyx_L1_error)
    ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:7808:3: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 944, __pyx_L1_error)
    ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:7813:3: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 944, __pyx_L1_error)
    ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:7891:3: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 945, __pyx_L1_error)
    ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:8762:3: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1102, __pyx_L1_error)
    ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:8767:3: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1102, __pyx_L1_error)
    ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:8845:3: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1103, __pyx_L1_error)
    ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:13782:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
      ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:13828:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
      ^
  lightfm/_lightfm_fast_no_openmp.c:1507:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
      (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:18965:17: warning: 'Py_OptimizeFlag' is deprecated [-Wdeprecated-declarations]
    if (unlikely(!Py_OptimizeFlag)) {
                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/pydebug.h:13:1: note: 'Py_OptimizeFlag' has been explicitly marked deprecated here
  Py_DEPRECATED(3.12) PyAPI_DATA(int) Py_OptimizeFlag;
  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:27445:27: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
      return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
                            ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:27457:36: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
      return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
                                     ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:27461:56: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
      if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
                                                         ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:27478:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
      __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
      ^
  lightfm/_lightfm_fast_no_openmp.c:1481:21: note: expanded from macro '__PYX_UPDATE_DICT_CACHE'
      (version_var) = __PYX_GET_DICT_VERSION(dict);\
                      ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:27998:36: error: no member named 'curexc_traceback' in 'struct _ts'
          PyObject* tmp_tb = tstate->curexc_traceback;
                             ~~~~~~  ^
  lightfm/_lightfm_fast_no_openmp.c:28001:21: error: no member named 'curexc_traceback' in 'struct _ts'
              tstate->curexc_traceback = tb;
              ~~~~~~  ^
  lightfm/_lightfm_fast_no_openmp.c:28635:53: error: no member named 'ob_digit' in 'struct _longobject'
          const digit* digits = ((PyLongObject*)op1)->ob_digit;
                                ~~~~~~~~~~~~~~~~~~~~  ^
  lightfm/_lightfm_fast_no_openmp.c:28949:9: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
          ^
  lightfm/_lightfm_fast_no_openmp.c:1486:16: note: expanded from macro '__PYX_PY_DICT_LOOKUP_IF_MODIFIED'
      if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
                 ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:28949:9: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
          ^
  lightfm/_lightfm_fast_no_openmp.c:1490:30: note: expanded from macro '__PYX_PY_DICT_LOOKUP_IF_MODIFIED'
          __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
                               ^
  lightfm/_lightfm_fast_no_openmp.c:1479:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
  #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                  ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) uint64_t ma_version_tag;
      ^
  /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
  #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                       ^
  lightfm/_lightfm_fast_no_openmp.c:30261:55: error: no member named 'ob_digit' in 'struct _longobject'
              const digit* digits = ((PyLongObject*)x)->ob_digit;
                                    ~~~~~~~~~~~~~~~~~~  ^
  lightfm/_lightfm_fast_no_openmp.c:30316:55: error: no member named 'ob_digit' in 'struct _longobject'
              const digit* digits = ((PyLongObject*)x)->ob_digit;
                                    ~~~~~~~~~~~~~~~~~~  ^
  lightfm/_lightfm_fast_no_openmp.c:30457:55: error: no member named 'ob_digit' in 'struct _longobject'
              const digit* digits = ((PyLongObject*)x)->ob_digit;
                                    ~~~~~~~~~~~~~~~~~~  ^
  lightfm/_lightfm_fast_no_openmp.c:30512:55: error: no member named 'ob_digit' in 'struct _longobject'
              const digit* digits = ((PyLongObject*)x)->ob_digit;
                                    ~~~~~~~~~~~~~~~~~~  ^
  lightfm/_lightfm_fast_no_openmp.c:30691:55: error: no member named 'ob_digit' in 'struct _longobject'
              const digit* digits = ((PyLongObject*)x)->ob_digit;
                                    ~~~~~~~~~~~~~~~~~~  ^
  lightfm/_lightfm_fast_no_openmp.c:30746:55: error: no member named 'ob_digit' in 'struct _longobject'
              const digit* digits = ((PyLongObject*)x)->ob_digit;
                                    ~~~~~~~~~~~~~~~~~~  ^
  lightfm/_lightfm_fast_no_openmp.c:31097:47: error: no member named 'ob_digit' in 'struct _longobject'
      const digit* digits = ((PyLongObject*)b)->ob_digit;
                            ~~~~~~~~~~~~~~~~~~  ^
  22 warnings and 10 errors generated.
  error: command '/usr/bin/clang' 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`

daviddavo commented 1 month ago

Can you try installing my forked version to see if it works?

pip install git+https://github.com/daviddavo/lightfm
RILUCK commented 1 month ago

Any solution around it? @daviddavo @K-Winkles

ModuleNotFoundError: No module named 'lightfm._lightfm_fast_no_openmp'

daviddavo commented 1 month ago

The only solution I found was recompiling using newest Cython and creating my own package.

pip install git+https://github.com/daviddavo/lightfm

I'm no expert on Cython, so I don't know what caveats does it have or If I broke something. All tests are passing, though.

K-Winkles commented 1 month ago

Honestly I just downgraded to Python 3.10.10 and it started working for me again