[
https://issues.apache.org/jira/browse/ARROW-14973?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Weston Pace updated ARROW-14973:
--------------------------------
Summary: [python][CI] How to build wheels depending on PyArrow that are
compatible with multiple PyArrow versions (was: [python][CI]How to build
wheels depending on PyArrow that are compatible with multiple PyArrow versions)
> [python][CI] How to build wheels depending on PyArrow that are compatible
> with multiple PyArrow versions
> --------------------------------------------------------------------------------------------------------
>
> Key: ARROW-14973
> URL: https://issues.apache.org/jira/browse/ARROW-14973
> Project: Apache Arrow
> Issue Type: New Feature
> Reporter: Julius
> Priority: Major
>
> Currently, for MongoDB's package [PyMongoArrow,
> |https://github.com/mongodb-labs/mongo-arrow/tree/main/bindings/python]we
> build our wheels following the instructions
> [here|https://arrow.apache.org/docs/python/extending.html]. (here is the
> [script|https://github.com/mongodb-labs/mongo-arrow/blob/main/bindings/python/release.sh]
> we use) However, once these wheels are built they are no longer compatible
> with versions of PyArrow other than the one that it was built with. Before we
> added Python 3.10 support we built all of our wheels with PyArrow 3.0. Those
> same wheels now break with the following message after upgrading PyArrow to
> 6.0:
> {code:java}
> ➜ ~ pip install --upgrade pyarrow
> Defaulting to user installation because normal site-packages is not writeable
> Requirement already satisfied: pyarrow in
> ./Library/Python/3.8/lib/python/site-packages (3.0.0)
> Collecting pyarrow
> Downloading pyarrow-6.0.1-cp38-cp38-macosx_10_13_x86_64.whl (19.1 MB)
> |████████████████████████████████| 19.1 MB 5.1 MB/s
> Requirement already satisfied: numpy>=1.16.6 in
> ./Library/Python/3.8/lib/python/site-packages (from pyarrow) (1.21.4)
> Installing collected packages: pyarrow
> Attempting uninstall: pyarrow
> Found existing installation: pyarrow 3.0.0
> Uninstalling pyarrow-3.0.0:
> Successfully uninstalled pyarrow-3.0.0
> ERROR: pip's dependency resolver does not currently take into account all the
> packages that are installed. This behaviour is the source of the following
> dependency conflicts.
> pymongoarrow 0.1.1 requires pyarrow<3.1,>=3, but you have pyarrow 6.0.1 which
> is incompatible.
> Successfully installed pyarrow-6.0.1
> ➜ ~ cd Work/mongo-arrow/bindings/python/test
> ➜ test git:(PYTHON-3008) ✗ python3 -m unittest discover EEEEEEEEEE
> ====================================================================== ERROR:
> test_arrow (unittest.loader._FailedTest)
> ----------------------------------------------------------------------
> ImportError: Failed to import test module: test_arrow Traceback (most recent
> call last): File
> "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/unittest/loader.py",
> line 436, in _find_test_path module = self._get_module_from_name(name)
> File
> "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/unittest/loader.py",
> line 377, in _get_module_from_name __import__(name) File
> "/Users/julius/Work/mongo-arrow/bindings/python/test/test_arrow.py", line 20,
> in <module> from pymongoarrow.api import aggregate_arrow_all,
> find_arrow_all, Schema File
> "/Users/julius/Library/Python/3.8/lib/python/site-packages/pymongoarrow/__init__.py",
> line 18, in <module> from pymongoarrow.lib import libbson_version
> ImportError:
> dlopen(/Users/julius/Library/Python/3.8/lib/python/site-packages/pymongoarrow/lib.cpython-38-darwin.so,
> 2): Library not loaded: @rpath/libarrow.300.dylib Referenced from:
> /Users/julius/Library/Python/3.8/lib/python/site-packages/pymongoarrow/lib.cpython-38-darwin.so
> Reason: image not found
> {code}
> The same error occurs when using our newer wheels built with PyArrow 6.0 when
> you downgrade to PyArrow 3.0:
> {code:java}
> ➜ python git:(main) ✗ pip install pyarrow==3.0
> Defaulting to user installation because normal site-packages is not writeable
> Collecting pyarrow==3.0
> Using cached pyarrow-3.0.0-cp38-cp38-macosx_10_13_x86_64.whl (14.1 MB)
> Requirement already satisfied: numpy>=1.16.6 in
> /Users/julius/Library/Python/3.8/lib/python/site-packages (from pyarrow==3.0)
> (1.21.4)
> Installing collected packages: pyarrow
> Attempting uninstall: pyarrow
> Found existing installation: pyarrow 6.0.1
> Uninstalling pyarrow-6.0.1:
> Successfully uninstalled pyarrow-6.0.1
> ERROR: pip's dependency resolver does not currently take into account all the
> packages that are installed. This behaviour is the source of the following
> dependency conflicts.
> pymongoarrow 0.2.0.dev0 requires pyarrow<6.1,>=6, but you have pyarrow 3.0.0
> which is incompatible.
> Successfully installed pyarrow-3.0.0
> ➜ python git:(main) ✗ cd tests
> cd: no such file or directory: tests
> ➜ python git:(main) ✗ cd test
> ➜ test git:(main) ✗ python3 -m unittest discover
> EEEEEEEEEE
> ======================================================================
> ERROR: test_arrow (unittest.loader._FailedTest)
> ----------------------------------------------------------------------
> ImportError: Failed to import test module: test_arrow
> Traceback (most recent call last):
> File
> "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/unittest/loader.py",
> line 436, in _find_test_path
> module = self._get_module_from_name(name)
> File
> "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/unittest/loader.py",
> line 377, in _get_module_from_name
> __import__(name)
> File "/Users/julius/Work/mongo-arrow/bindings/python/test/test_arrow.py",
> line 20, in <module>
> from pymongoarrow.api import aggregate_arrow_all, find_arrow_all, Schema
> File
> "/Users/julius/Library/Python/3.8/lib/python/site-packages/pymongoarrow/__init__.py",
> line 18, in <module>
> from pymongoarrow.lib import libbson_version
> ImportError:
> dlopen(/Users/julius/Library/Python/3.8/lib/python/site-packages/pymongoarrow/lib.cpython-38-darwin.so,
> 2): Library not loaded: @rpath/libarrow.600.dylib
> Referenced from:
> /Users/julius/Library/Python/3.8/lib/python/site-packages/pymongoarrow/lib.cpython-38-darwin.so
> Reason: image not found
> {code}
> Is there a way to build wheels that support multiple PyArrow versions?
>
>
--
This message was sent by Atlassian Jira
(v8.20.1#820001)