Pipenv安装pyarrow 4.0.0失败:版本存在却提示无兼容版本
问题:安装pyarrow 4.0.0时明明存在版本却报错找不到?
环境与操作细节
- Python版本:3.6
- 设备:MacBook Pro M1
- 执行的安装命令:
pip install pyarrow==4.0.0 - Pipfile配置:
[[source]] url = "https://pypi.python.org/simple" verify_ssl = true name = "pypi"
报错信息
ERROR: Could not find a version that satisfies the requirement pyarrow~=4.0.0 (from versions: 0.9.0, 0.10.0, 0.11.0, 0.11.1, 0.12.0, 0.12.1, 0.13.0, 0.14.0, 0.15.1, 0.16.0, 0.17.0, 0.17.1, 1.0.0, 1.0.1, 2.0.0, 3.0.0, 4.0.0, 4.0.1, 5.0.0, 6.0.0, 6.0.1)
ERROR: No matching distribution found for pyarrow~=4.0.0
疑问
报错信息中已明确列出4.0.0版本,且Pipfile指定的PyPI源中能找到该版本,但尝试安装4.0.0、4.0.1、4.0.*均失败,为何会出现这种矛盾的情况?
原因与解决办法
核心原因:架构兼容性不匹配
pyarrow 4.x版本在PyPI上仅提供了x86_64架构的预编译包,没有适配Apple Silicon(arm64)架构的版本。而Python 3.6本身也没有针对M1芯片的官方支持,所以当M1设备尝试安装时,pip无法找到对应架构的包,尽管报错里列出了版本号,但这些版本并不适用于当前设备的架构。
可行解决方案
- 升级Python版本:Python 3.8及以上版本对M1芯片有完善支持,同时pyarrow从5.0.0开始提供了arm64架构的预编译包。将Python升级到3.8+后,可直接安装适配M1的pyarrow版本。
- 使用Rosetta 2模拟x86环境:在终端图标上右键选择「使用Rosetta打开」,在该终端下创建Python 3.6的x86虚拟环境,再执行安装命令。这种方式会模拟x86架构,匹配到pyarrow 4.x的预编译包。
- 从源码编译安装:如果必须保留Python 3.6和M1原生环境,可尝试从源码编译pyarrow 4.0.0。需要提前安装CMake、C++编译器等依赖,编译过程耗时较长,且可能遇到依赖冲突问题。
内容的提问来源于stack exchange,提问作者AbhiKB
相关产品推荐
相关产品推荐

