安装 PyArrow#

系统兼容性#

PyArrow 会定期在 Windows、macOS 和各种 Linux 发行版上进行构建和测试。我们强烈建议使用 64 位系统。

Python 兼容性#

PyArrow 目前兼容 Python 3.10、3.11、3.12、3.13 和 3.14。

使用 Conda#

使用 Condaconda-forge 安装最新版本的 PyArrow

conda install -c conda-forge pyarrow

注意

虽然 pyarrow conda-forge 软件包是大多数用户的正确选择,但该软件包同时存在最小化和最大化版本,您可以根据自己的使用场景选择更合适的版本。请参阅 conda-forge 软件包之间的差异

使用 Pip#

PyPI 安装最新版本(支持 Windows、Linux 和 macOS)

pip install pyarrow

如果您在 Windows 上使用 pip wheel 时遇到任何导入问题,可能需要安装 最新的 Visual C++ Redistributable for Visual Studio

警告

在 Linux 上,您需要 pip >= 19.0 才能检测到预构建的二进制软件包。

安装每日构建版(Nightly)或从源码安装#

请参阅 Python 开发

依赖项#

可选依赖项

  • NumPy 1.21.2 或更高版本。

  • pandas 1.3.4 或更高版本。

  • cffi.

PyArrow 兼容的其他软件包包括 fsspec,以及用于处理时区的 pytzdateutiltzdata 软件包。

Windows 上的 tzdata#

在 Linux 和 macOS 上,Arrow 使用操作系统提供的时区数据库。在 Windows 上,当使用 MSVC 或较新的 MinGW GCC(13 版本及以上)构建时,Arrow 会使用 Windows 时区数据库,这涵盖了大多数预构建的软件包。这些构建版本无需额外设置。

但是,当 PyArrow 在 Windows 上使用 Clang/libc++ 构建时,需要用户提供 IANA 时区数据库。要下载并解压 IANA 时区数据库的文本版本,请遵循 C++ 运行时依赖项 中的说明,或使用(已弃用的)pyarrow 工具函数 pyarrow.util.download_tzdata_on_windows()

默认情况下,时区数据库将在 %USERPROFILE%\Downloads\tzdata 处检测。如果数据库下载在其他位置,则需要使用(已弃用的)pa.set_timezone_db_path("custom_path") 函数从 Python 设置数据库的自定义路径。

注意

如果您使用 pip 安装 pyarrow,在向 ORC 文件写入日期时间数据时可能会遇到问题。解决此问题的一种可能方案是:

  1. 使用 pip install tzdata 安装 tzdata

  2. 设置环境变量 TZDIR = path\to\.venv\Lib\site-packages\tzdata\

您可以使用以下 python 命令找到 tzdata 的安装位置

import tzdata
print(tzdata.__file__)  # path\to\.venv\Lib\site-packages\tzdata\__init__.py

conda-forge 软件包之间的差异#

conda-forge 上,PyArrow 以三个独立的软件包发布,每个软件包提供不同程度的功能。这与仅提供单个 PyArrow 软件包的 PyPi 不同。

这种拆分的目的是为了对大多数用户最小化安装包的大小 (pyarrow),为特殊使用场景提供一个较小的最小化软件包 (pyarrow-core),同时仍为有需要的用户提供完整的软件包 (pyarrow-all)。历史上 conda-forge 上的 pyarrow 现在是 pyarrow-all,不过大多数用户可以继续使用 pyarrow

pyarrow-core 软件包包含以下功能:

pyarrow 软件包增加了以下内容:

  • Acero (即 pyarrow.acero)

  • 表格数据集 (即 pyarrow.dataset)

  • Parquet (即 pyarrow.parquet)

  • Substrait (即 pyarrow.substrait)

最后,pyarrow-all 增加了:

  • Arrow Flight RPC 和 Flight SQL (即 pyarrow.flight)

  • Gandiva (即 pyarrow.gandiva)

下表列出了每个软件包提供的功能,在决定选择哪一个软件包或 创建自定义选择 时可能会有所帮助。

组件

软件包

pyarrow-core

pyarrow

pyarrow-all

Core

pyarrow-core

Parquet

libparquet

数据集

libarrow-dataset

Acero

libarrow-acero

Substrait

libarrow-substrait

Flight

libarrow-flight

Flight SQL

libarrow-flight-sql

Gandiva

libarrow-gandiva

创建自定义选择#

如果您知道需要哪些组件并希望控制安装内容,可以创建一个自定义的选择方案,仅包含您需要的额外功能。例如,要安装 pyarrow-core 并增加对读写 Parquet 的支持,请在安装 pyarrow-core 的同时安装 libparquet

conda install -c conda-forge pyarrow-core libparquet

或者,如果您希望使用 pyarrow 但需要对 Flight RPC 的支持:

conda install -c conda-forge pyarrow libarrow-flight