indygreg / indygreg/python-zstandard
ImportError: zstd C API versions mismatch; Python bindings were not compiled/linked against expected zstd version (10409 returned by the lib, 10409 hardcoded in zstd headers, 10408 hardcoded in the cext)
- Dominant language
- C
- Stars
- 642
- Forks
- 116
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 5
Description
I get the following error when I try to use just-built C extension against system zstd:
```
Traceback (most recent call last):
File "", line 1, in
File "/tmp/python-zstandard/build/lib.linux-x86_64-3.9/zstandard/__init__.py", line 39, in
from .backend_c import * # type: ignore
ImportError: zstd C API versions mismatch; Python bindings were not compiled/linked against expected zstd version (10409 returned by the lib, 10409 hardcoded in zstd headers, 10408 hardcoded in the cext)
```
This is how I built it:
```
$ python setup.py build --system-zstd
generating build/zstandard/_cffi.c
regenerated: 'build/zstandard/_cffi.c'
running build
running build_py
creating build/lib.linux-x86_64-3.9
creating build/lib.linux-x86_64-3.9/zstandard
copying zstandard/backend_cffi.py -> build/lib.linux-x86_64-3.9/zstandard
copying zstandard/__init__.py -> build/lib.linux-x86_64-3.9/zstandard
copying zstandard/__init__.pyi -> build/lib.linux-x86_64-3.9/zstandard
copying zstandard/py.typed -> build/lib.linux-x86_64-3.9/zstandard
running build_ext
building 'zstandard.backend_c' extension
creating build/temp.linux-x86_64-3.9
creating build/temp.linux-x86_64-3.9/c-ext
x86_64-pc-linux-gnu-gcc-10.2.0 -pthread -fPIC -Ic-ext -I/usr/include/python3.9 -c c-ext/backend_c.c -o build/temp.linux-x86_64-3.9/c-ext/backend_c.o -DZSTD_MULTITHREAD
x86_64-pc-linux-gnu-gcc-10.2.0 -pthread -shared -Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu build/temp.linux-x86_64-3.9/c-ext/backend_c.o -L/usr/lib64 -lzstd -o build/lib.linux-x86_64-3.9/zstandard/backend_c.cpython-39-x86_64-linux-gnu.so
building 'zstandard._cffi' extension
creating build/temp.linux-x86_64-3.9/build
creating build/temp.linux-x86_64-3.9/build/zstandard
creating build/temp.linux-x86_64-3.9/zstd
x86_64-pc-linux-gnu-gcc-10.2.0 -pthread -fPIC -I/tmp/python-zstandard/zstd -I/tmp/python-zstandard/zstd/dictBuilder -I/usr/include/python3.9 -c build/zstandard/_cffi.c -o build/temp.linux-x86_64-3.9/build/zstandard/_cffi.o
x86_64-pc-linux-gnu-gcc-10.2.0 -pthread -fPIC -I/tmp/python-zstandard/zstd -I/tmp/python-zstandard/zstd/dictBuilder -I/usr/include/python3.9 -c zstd/zstdlib.c -o build/temp.linux-x86_64-3.9/zstd/zstdlib.o
x86_64-pc-linux-gnu-gcc-10.2.0 -pthread -shared -Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu build/temp.linux-x86_64-3.9/build/zstandard/_cffi.o build/temp.linux-x86_64-3.9/zstd/zstdlib.o -L/usr/lib64 -o build/lib.linux-x86_64-3.9/zstandard/_cffi.cpython-39-x86_64-linux-gnu.so
$ cd build/lib.linux-x86_64-3.9/
$ python -c 'import zstandard.backend_c'
Traceback (most recent call last):
File "", line 1, in
File "/tmp/python-zstandard/build/lib.linux-x86_64-3.9/zstandard/__init__.py", line 39, in
from .backend_c import * # type: ignore
ImportError: zstd C API versions mismatch; Python bindings were not compiled/linked against expected zstd version (10409 returned by the lib, 10409 hardcoded in zstd headers, 10408 hardcoded in the cext)
```
I can reproduce this with git master @ 477776e6019478ca1c0b5777b073afbec70975f5
Contributor guide
Research direction
Reproduce the failure with `python setup.py build --system-zstd` and the shown import command. Start by comparing the version sources in c-ext/backend_c.c, build/zstandard/_cffi.c, zstd/zstdlib.c, and the system zstd headers; done means the built Python bindings import successfully without the C API version mismatch.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, python
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100