我正在尝试使用 docker 在 alpine 图像上安装 pyarrow。 Pyarrow 需要预安装 Arrow C++ 库,我已经先安装了 以下是 dockerfile:
FROM python:3.12-alpine
RUN apk add --no-cache \
build-base \
cmake \
boost-dev \
zlib-dev \
curl \
bash \
git \
openssl-dev \
py3-pip \
py3-numpy \
py3-wheel
RUN apk add --no-cache \
apache-arrow-dev \
py3-setuptools
RUN apk add --no-cache \
python3-dev \
musl-dev \
linux-headers
RUN git clone https://github.com/apache/arrow.git /arrow \
&& cd /arrow/cpp \
&& mkdir build \
&& cd build \
&& cmake .. \
&& make -j$(nproc) \
&& make install
ENV CMAKE_PREFIX_PATH="/usr/local/lib/cmake/Arrow"
RUN python3 -m ensurepip && \
pip install --upgrade pip
RUN pip install pyarrow
但是,安装失败并出现以下错误消息:
错误:'Wrap'不是'arrow::py::{anonymous}::WrapBytes
采取的步骤: 升级 Pip:确保 pip 版本至少为 19.0。 尝试预构建二进制文件:尝试安装不带 --no-binary 标志的 pyarrow。 指定版本:尝试安装特定版本的 pyarrow。 检查依赖项:确保安装了所有必要的系统依赖项。
如何才能在 Docker 容器中成功安装 pyarrow?我应该考虑哪些特定的依赖项或配置?
谢谢!
根据上面的建议,以下命令对我有用:
RUN git clone --no-checkout https://github.com/apache/arrow.git /arrow \
&& cd /arrow \
&& git checkout tags/apache-arrow-17.0.0 \
&& cd cpp \
&& mkdir build \
&& cd build \
&& cmake -DARROW_CSV=ON -DARROW_JSON=ON -DARROW_FILESYSTEM=ON .. \
&& make -j$(nproc) \
&& make install