Python pip install pyarrow 错误,无法执行'cmake'

Posted

技术标签:

【中文标题】Python pip install pyarrow 错误,无法执行\'cmake\'【英文标题】:Python pip install pyarrow error, unable to execute 'cmake'Python pip install pyarrow 错误,无法执行'cmake' 【发布时间】:2019-02-10 09:03:35 【问题描述】:

我正在尝试在我的 EMR 集群的主实例上安装 pyarrow,但是我总是收到此错误。

[hadoop@ip-XXX-XXX-XXX-XXX ~]$ sudo /usr/bin/pip-3.4 install pyarrow
Collecting pyarrow
Downloading https://files.pythonhosted.org/packages/c0/a0/f7e9dfd8988d94f4952f9b50eb04e14a80fbe39218520725aab53daab57c/pyarrow-0.10.0.tar.gz (2.1MB)
100% |████████████████████████████████| 2.2MB 643kB/s 
Requirement already satisfied: numpy>=1.10 in /usr/local/lib64/python3.4/site-packages (from pyarrow)
Requirement already satisfied: six>=1.0.0 in /usr/local/lib/python3.4/site-packages (from pyarrow)
Installing collected packages: pyarrow
Running setup.py install for pyarrow ... error
Complete output from command /usr/bin/python3.4 -u -c "import setuptools, tokenize;__file__='/mnt/tmp/pip-build-pr3y5_mu/pyarrow/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-vmywdpeg-record/install-record.txt --single-version-externally-managed --compile:
/usr/lib64/python3.4/distutils/dist.py:260: UserWarning: Unknown distribution option: 'long_description_content_type'
warnings.warn(msg)
/mnt/tmp/pip-build-pr3y5_mu/pyarrow/.eggs/setuptools_scm-3.1.0-py3.4.egg/setuptools_scm/utils.py:118: UserWarning: 'git' was not found
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.4
creating build/lib.linux-x86_64-3.4/pyarrow
copying pyarrow/pandas_compat.py -> build/lib.linux-x86_64-3.4/pyarrow
copying pyarrow/serialization.py -> build/lib.linux-x86_64-3.4/pyarrow
......
creating build/lib.linux-x86_64-3.4/pyarrow/tests/data
copying pyarrow/tests/data/v0.7.1.all-named-index.parquet -> build/lib.linux-x86_64-3.4/pyarrow/tests/data
copying pyarrow/tests/data/v0.7.1.column-metadata-handling.parquet -> build/lib.linux-x86_64-3.4/pyarrow/tests/data
copying pyarrow/tests/data/v0.7.1.parquet -> build/lib.linux-x86_64-3.4/pyarrow/tests/data
copying pyarrow/tests/data/v0.7.1.some-named-index.parquet -> build/lib.linux-x86_64-3.4/pyarrow/tests/data
running build_ext
creating build/temp.linux-x86_64-3.4
-- Runnning cmake for pyarrow
cmake -DPYTHON_EXECUTABLE=/usr/bin/python3.4  -DPYARROW_BOOST_USE_SHARED=on -DCMAKE_BUILD_TYPE=release /mnt/tmp/pip-build-pr3y5_mu/pyarrow
unable to execute 'cmake': No such file or directory
error: command 'cmake' failed with exit status 1

----------------------------------------
Command "/usr/bin/python3.4 -u -c "import setuptools, tokenize;__file__='/mnt/tmp/pip-build-pr3y5_mu/pyarrow/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-vmywdpeg-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /mnt/tmp/pip-build-pr3y5_mu/pyarrow/

我不知道为什么它说'command'cmake' failed with exit status 1',事实上可以肯定的是,我预装了cmake,但我仍然得到这个错误。此外,我可以毫无问题地执行 sudo pip install pyarrow,但是在使用 sudo pip-3.4 install pyarrow 时出现错误。我是否遗漏了什么或者这个错误与cmake无关?如有任何帮助,我将不胜感激。

【问题讨论】:

cmake 在您的 $PATH 上吗?您对sudo 的使用可能会重置$PATH。检查sudo env(或不要使用 sudo 安装简单模块) @Botje cmake 在 $PATH 中。如果在 EMR 中没有 sudo,我会被拒绝。这里奇怪的是我可以毫无问题地使用 sudo pip install pyarrow,但是使用 sudo pip-3.4 install 时出现错误。 我收到了sudo pip-3.4 install pyarror 的这个错误:package 'arrow' not found?安装 0.9.0 版确实对我有用,但我不会称其为理想的解决方案。 AWS AMI 似乎没有箭头包。我不愿意自己下载和构建箭头。也许我会用python2。 如果有人在 2021 年寻找这个,对我有用的是设置导出 ARROW_HOME=/usr/local,然后 pip3 install pyarrow 完美运行。 【参考方案1】:

对我(在 linux 上)来说,问题是 pip 版本太旧

pip --version
> pip 18.1

这是根据arrow.apache.org太低了:

在 Linux 上,您需要 pip >= 19.0 来检测预构建的二进制文件 包。

pip 升级到最新版本,这对我有用:

pip install --upgrade pip

但对您来说可能会有所不同,请参阅此 thread 了解其他升级方式 pip

【讨论】:

【参考方案2】:

最后,我找到了解决这种情况的方法,方法是安装较早版本的 pyarrow。我试图安装失败的 pyarrow-0.10.0。但是如果我安装的是 pyarrow-0.9.0,它就可以工作。所以我认为cmake和pyarrow-0.10.0之间可能存在一些兼容问题。

【讨论】:

你是怎么安装pyarrow-0.9.0版本的? @Sherlock 您可以使用 pip install pyarrow==0.9.0 或您想要的任何其他版本。 这也是我的解决方案! 对我不起作用。我仍然有错误pyarrow" failed with error code 1【参考方案3】:

似乎 pyarrow 与 cmake 和 pip 存在问题。

您可以使用 conda 代替 pip。

conda install -c conda-forge pyarrow

【讨论】:

以上是关于Python pip install pyarrow 错误,无法执行'cmake'的主要内容,如果未能解决你的问题,请参考以下文章

python 的pip install 安装包报错。

python包管理工具pip install详解

python2.7.13 怎么pip install 各种包

Python用pip install安装Scipy报错

python中 pip install --upgrade pip出错

python -m pip install --upgrade pip 更新一直报错