I have tried almost everything. I have reached a point where manually installing some of the dependencies works. But not for every package.
As an example this works:
CFLAGS="-I/opt/homebrew/opt/openssl@3/include" \
LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib" \
env PG_CONFIG=/opt/homebrew/opt/libpq/bin/pg_config uv pip install psycopg2==2.9.2
If I don't run it like that it fails to build from source. I am using Python 3.10.12 for local dev as that's the one that works on our production server.
But I am now getting another failure to build from source for gevent
:
CFLAGS="-I/opt/homebrew/opt/openssl@3/include" \
LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib" \
env PG_CONFIG=/opt/homebrew/opt/libpq/bin/pg_config uv pip install gevent==21.8.0
The error here is:
Failed to build `gevent==21.8.0`
├─▶ The build backend returned an error
╰─▶ Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
[stdout]
Compiling src/gevent/libev/corecext.pyx because it changed.
[1/1] Cythonizing src/gevent/libev/corecext.pyx
[stderr]
performance hint: src/gevent/libev/corecext.pyx:1325:0: Exception check on '_syserr_cb' will always require the GIL to be
acquired.
Possible solutions:
1. Declare '_syserr_cb' as 'noexcept' if you control the definition and you're sure you don't want the function to raise
exceptions.
2. Use an 'int' return type on '_syserr_cb' to allow an error code to be returned.
Error compiling Cython file:
------------------------------------------------------------
...
cdef tuple integer_types
if sys.version_info[0] >= 3:
integer_types = int,
else:
integer_types = (int, long)
^
------------------------------------------------------------
This implies Python 3.10.12 is not compatible. However, the requirements.txt
file has this entry:
gevent==21.8.0 ; sys_platform != 'win32' and python_version > '3.9' and python_version <= '3.10' # (Jammy)
Doesn't that imply this should work? Why does it fail?