-
Notifications
You must be signed in to change notification settings - Fork 2k
Open
Labels
bugSomething isn't workingSomething isn't working
Description
What happened?
📝 Summary
When attempting to install chromadb ( version >=1.0.20), the installation fails exclusively on Python 3.14 due to a compilation error in the hnswlib dependency.
The installation succeeds without issue on Python 3.12. This suggests a compatibility problem with the new Python 3.14 version on macOS ARM64 (M2), likely requiring updated build scripts or pre-built binaries (wheels).
💥 Error Details
The build fails with a C++ header file not found error ('iostream' file not found) during the compilation of hnswlib.
Command Attempted
uv add chromadb>=1.0.20
Full Error Trace Snippet
Resolved 120 packages in 505ms
× Failed to build hnswlib==0.8.0
├─▶ The build backend returned an error
╰─▶ Call to setuptools.build_meta.build_wheel failed (exit status: 1)
[stderr]
./python_bindings/bindings.cpp:1:10: fatal error: 'iostream' file not found
1 | #include <iostream>
| ^~~~~~~~~~
1 error generated.
error: command '/usr/bin/clang++' failed with exit code 1
hint: This usually indicates a problem with the package or the build environment.
Versions
| Operating System | macOS (ARM64) |
|---|---|
| Hardware | Apple M2 Chip |
| macOS Version | Tahoe 26.1 (Latest Preview/Developer build) |
| Python Version (Fails) | 3.14 (Installed via Homebrew: python@3.14) |
| Package Manager | uv (Don't test yet using pip) |
| ChromaDB Version | Trying to install >=1.0.20 |
Relevant log output
❯ uv add chromadb>1.0.20
Resolved 120 packages in 505ms
× Failed to build `hnswlib==0.8.0`
├─▶ The build backend returned an error
╰─▶ Call to `setuptools.build_meta.build_wheel` failed (exit status: 1)
[stdout]
running bdist_wheel
running build
running build_ext
clang++ -fno-strict-overflow -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -O3
-Wall -I/opt/homebrew/opt/openssl@1.1/include -I[CACHE_PATH]/uv/builds-v0/.tmp[RANDOM_ID]/include
-I/opt/homebrew/opt/python@3.14/Frameworks/Python.framework/Versions/3.14/include/python3.14
-c [TEMP_PATH]/tmp[RANDOM_FILE_ID].cpp -o
[TEMP_PATH]/tmp[RANDOM_FILE_ID].o -std=c++14
clang++ -fno-strict-overflow -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -O3
-Wall -I/opt/homebrew/opt/openssl@1.1/include -I[CACHE_PATH]/uv/builds-v0/.tmp[RANDOM_ID]/include
-I/opt/homebrew/opt/python@3.14/Frameworks/Python.framework/Versions/3.14/include/python3.14
-c [TEMP_PATH]/tmp[RANDOM_FILE_ID].cpp -o
[TEMP_PATH]/tmp[RANDOM_FILE_ID].o -fvisibility=hidden
checking avalability of flag: -march=native
clang++ -fno-strict-overflow -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -O3
-Wall -I/opt/homebrew/opt/openssl@1.1/include -I[CACHE_PATH]/uv/builds-v0/.tmp[RANDOM_ID]/include
-I/opt/homebrew/opt/python@3.14/Frameworks/Python.framework/Versions/3.14/include/python3.14
-c [TEMP_PATH]/tmp[RANDOM_FILE_ID].cpp -o
[TEMP_PATH]/tmp[RANDOM_FILE_ID].o -march=native
flag: -march=native is available
building 'hnswlib' extension
clang++ -fno-strict-overflow -Wsign-compare -Wunreachable-code -fno-common
-dynamic -DNDEBUG -g -O3 -Wall -I/opt/homebrew/opt/openssl@1.1/include
-I[CACHE_PATH]/uv/builds-v0/.tmp[RANDOM_ID]/lib/python3.14/site-packages/pybind11/include
-I[CACHE_PATH]/uv/builds-v0/.tmp[RANDOM_ID]/lib/python3.14/site-packages/numpy/_core/include
-I./hnswlib/ -I[CACHE_PATH]/uv/builds-v0/.tmp[RANDOM_ID]/include
-I/opt/homebrew/opt/python@3.14/Frameworks/Python.framework/Versions/3.14/include/python3.14 -c
./python_bindings/bindings.cpp -o build/temp.macosx-15.0-arm64-cpython-314/python_bindings/bindings.o
-O3 -march=native -stdlib=libc++ -mmacosx-version-min=10.7 -DVERSION_INFO=\"0.8.0\" -std=c++14
-fvisibility=hidden
[stderr]
./python_bindings/bindings.cpp:1:10: fatal error: 'iostream' file not found
1 | #include <iostream>
| ^~~~~~~~~~
1 error generated.
error: command '/usr/bin/clang++' failed with exit code 1
hint: This usually indicates a problem with the package or the build environment.
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to
skip locking and syncing.Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working