There is no ABI stability between major versions of pyarrow either at the Cython or C++ levels at the moment (furthermore, it seems unlikely to be the case in the near future). I would recommend pinning the pyarrow version you depend on and bumping the pin when new major versions are released.
On Wed, Sep 1, 2021 at 5:50 AM Shawn Yang <shawn.ck.y...@gmail.com> wrote: > > I built a multi-language library based on arrow and the python > implementation used arrow cython and c++ api. I want my library to be > compatible with multiple pyarrow versions. But the dynamic library in my > python implementation depended on `libarrow.xxx.dylib` and for every > pyarrow version the `libarrow.xxx.dylib` is different. What can I do to > make my library compatible with multiple pyarrow versions? > When using a different pyarrow version with the version that my library was > built with. I got the following error: > ====================================================================================== > ERRORS > ImportError while importing test module > '/Users/chaokunyang/ant/Development/DevProjects/fury/python/pyfury/tests/test_vectorized.py'. > Hint: make sure your test modules/packages have valid Python names. > Traceback: > ../../../../../opt/anaconda3/lib/python3.8/importlib/__init__.py:127: in > import_module > return _bootstrap._gcd_import(name[level:], package, level) > pyfury/__init__.py:53: in <module> > from pyfury._fury import create_row_encoder, RowData, ArrowWriter > E ImportError: > dlopen(/Users/chaokunyang/ant/Development/DevProjects/fury/python/pyfury/_fury.so, > 2): Library not loaded: @rpath/libarrow.100.dylib > E Referenced from: > /Users/chaokunyang/ant/Development/DevProjects/fury/python/pyfury/_fury.so > E Reason: image not found > > My library was built with pyarrow==1.0.0, when I use pyarrow>=2.0.0, I got > upper errors.