The root issue is the [build_system] requires array has cffi as an unconditional build-time dependency. Even if you pass --config-setting='--global-option=--no-cffi-backend' to python -m build it'll fail the build if cffi isn't present. The setup.py entry point does not enforce this requirement if you disable building the cffi backend.