numeristical / splinecalib

Location for the splinecalib package
MIT License
3 stars 3 forks source link

Python 3.11 support #4

Open philip-khor opened 1 year ago

philip-khor commented 1 year ago

splinecalib is failing to build for py311 on the conda-forge CI.

splinecalib/loss_fun_c.c:198:12: fatal error: longintrepr.h: No such file or directory

note the base library needs to regenerate its c sources: https://github.com/numeristical/splinecalib/blob/main/splinecalib/loss_fun_c.c#L198

Originally posted by @timkpaine in https://github.com/conda-forge/splinecalib-feedstock/issues/6#issuecomment-1312545617

blucena commented 1 year ago

OK, let me look into this. Right now I leave the C files static (which I thought would be more stable). But maybe I should change it so that it cythonizes the pyx as part of the build. Let me know if you have any insight into this. :)

blucena commented 1 year ago

This seems to be a common bug with Python 3.11 - apparently related to some incompatibility between Cython and Python 3.11: e.g.: https://stackoverflow.com/questions/74979674/gensim-install-in-python-3-11-fails-because-of-missing-longintrepr-h-file https://github.com/scipy/scipy/issues/16262

For now I would suggest just using Python 3.10 or seeing if the latest version of Cython (or Python 3.11) fixes the issue

blucena commented 1 year ago

@philip-khor This should be resolved with splinecalib 0.0.6 - please let me know if it still fails.

bhyatt25 commented 7 months ago

@blucena I am still unable to build splinecalib on Python 3.11. Any potential fixes or updates?

blucena commented 7 months ago

@bhyatt25 I was able to install v0.0.7 with Python 3.11 on Mac. Can you tell me the platform you are using and the error you get?

bhyatt25 commented 7 months ago

@blucena I am using Windows 11. I've tried just installing splinecalib and forcing version 0.0.7 and I am receiving the below error:

Building wheels for collected packages: splinecalib Building wheel for splinecalib (pyproject.toml) ... error error: subprocess-exited-with-error

× Building wheel for splinecalib (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [12 lines of output] running bdist_wheel running build running build_py creating build creating build\lib.win-amd64-cpython-311 creating build\lib.win-amd64-cpython-311\splinecalib copying splinecalib\calib_utils.py -> build\lib.win-amd64-cpython-311\splinecalib copying splinecalib\splinecalib.py -> build\lib.win-amd64-cpython-311\splinecalib copying splinecalib__init__.py -> build\lib.win-amd64-cpython-311\splinecalib running build_ext building 'loss_fun_c' extension error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/ [end of output]

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

blucena commented 7 months ago

yeah - so the issue is that I am not providing pre-compiled wheels, so you need to have a C-compiler installed. Let me look into how I can include some pre-compiled wheels.

bhyatt25 commented 7 months ago

@blucena assuming you were able to implement the pre-compiled wheels because I was just able to install the splinecalib package on my machine. Thank you!

blucena commented 7 months ago

Wish I could take credit, but I didn't change anything. But glad it is working for you now!