Numpy: 使用 numpy 1.19 时的 Buggy Accelerate Backend

创建于 2020-04-09  ·  31评论  ·  资料来源: numpy/numpy

由于 MacOS 10.14.6 中的运行时错误,Numpy 1.19 无法导入。 Polyfit 健全性测试发出警告,很可能是由于使用了有问题的 Accelerate 后端。 如果您自己编译,请参阅 site.cfg.example 以获取信息。 否则,将此报告给提供 NumPy 的供应商。

重现代码示例:

import numpy as np

错误信息:

RuntimeError:Polyfit 健全性测试发出警告,很可能是由于使用了有问题的 Accelerate 后端。 如果您自己编译,请参阅 site.cfg.example 以获取信息。 否则,将此报告给提供 NumPy 的供应商。
RankWarning:Polyfit 可能条件不佳

回溯(最近一次调用最后一次):
文件“/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/runpy.py”,第 183 行,在 _run_module_as_main
mod_name,mod_spec,代码 = _get_module_details(mod_name,_Error)
文件“/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/runpy.py”,第 109 行,在 _get_module_details 中
__import__(pkg_name)
文件“/Users/billyzhaoyh/Desktop/Simulation/reina-model/calc/__init__.py”,第1行,在
从 .utils 导入 calcfunc
文件“/Users/billyzhaoyh/Desktop/Simulation/reina-model/calc/utils.py”,第 9 行,在
从 utils.quilt 导入 load_datasets
文件“/Users/billyzhaoyh/Desktop/Simulation/reina-model/utils/quilt.py”,第4行,在
进口被子
文件“/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/site-packages/quilt/__init__.py”,第87行,在
从 .tools.command 导入(
文件“/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/site-packages/quilt/tools/command.py”,第24行,在
将 numpy 导入为 np
文件“/Users/billyzhaoyh/Desktop/Simulation/reina-model/src/numpy/numpy/__init__.py”,第286行,在
引发运行时错误(味精)
RuntimeError:Polyfit 健全性测试发出警告,很可能是由于使用了有问题的 Accelerate 后端。 如果您自己编译,请参阅 site.cfg.example 以获取信息。 否则,将此报告给提供 NumPy 的供应商。
RankWarning:Polyfit 可能条件不佳

Numpy/Python 版本信息:


蟒蛇 3.7.6
Numpy -e git+ https://github.com/numpy/numpy.git@078ac01a85c4db46e7f148829c2e0d0e0f30c36f#egg =numpy

最有用的评论

一个稍微简单的解决方案:

$ rm -v ~/Library/Caches/pip/wheels/<em i="7">/</em>/<em i="8">/</em>/<em i="9">numpy</em> # clear the pip wheel cache of any built numpy wheels

根据https://twitter.com/pradyunsg/status/1317081239526936576?s=20现在可以使用内置的pip命令来完成:

$ pip cache remove numpy
$ brew install openblas # make sure OpenBLAS is installed
$ # activate your pypy3 virtualenv
$ OPENBLAS="$(brew --prefix openblas)" pip install numpy # let numpy's setup.py know where OpenBLAS is installed

这具有额外的好处,即不需要重新构建轮子,并且 pypy3 上的任何未来pip install numpy都将起作用。

所有31条评论

这是设计使然。 您是否阅读了错误消息? 不清楚吗?

那么如何通过更新 Accelerate 后端来修复此错误? 我进行了搜索,但认为我无法为我的 MacOS 更新它。

@billlyzhaoyh在 MacOS 上构建时请求使用 OpenBLAS。 使用根 repo 目录中的 site.cfg 来构建。

关闭。 我们强烈建议不要使用加速。

关闭。 我们强烈建议不要使用加速。

当然,我们如何使用它? 在我的 macOS 中运行简单的import numpy时,我遇到了同样的错误

如果您正在构建自己的 NumPy,请获取 OpenBlas。 您可以使用python3 tools/openblas_support.py下载用于构建官方轮子的那个。 如果您使用的是提供商的 NumPy,请询问他们为什么使用 Accelerate。

如果您正在构建自己的 NumPy,请获取 OpenBlas。 您可以使用python3 tools/openblas_support.py下载用于构建官方轮子的那个。 如果您使用的是提供商的 NumPy,请询问他们为什么使用 Accelerate。

我绝对不是自己建造的。 我正在使用 macOS,并运行pip3 install -U numpy ,所以我不确定您所说的“提供者”是什么意思。

Pip 可以在背后从源代码构建。 如果安装时间超过几秒钟,则可能正在编译。 要强制 pip 只使用二进制轮而不编译,请使用

pip3 install --upgrade --only-binary :all: <package>

您可以尝试卸载 numpy 并使用--only-binary :all:参数进行安装吗?

这为我解决了问题。 (我用pip3替换了pip ... 今天的 numpy 版本将是 1.19.1)
https://gist.github.com/yatsu/47bdde35e8abbe7d14bbe730342aa9e0#file -numpy-openblas-macos-pip-sh

编辑:如果要点被删除,请粘贴完整的解决方案:)

# Setup HomeBrew if not already installed: https://brew.sh/
brew install openblas
mkdir /tmp/numpy_local
cd /tmp/numpy_local
pip3 download --no-binary :all: --no-deps numpy
unzip numpy-*.zip  # (assuming there's only one version in this folder)
cd numpy-1.19.1 # the version may be a later version than this

cat > site.cfg <<EOF
[openblas]
libraries = openblas
library_dirs = $(brew --prefix openblas)/lib
include_dirs = $(brew --prefix openblas)/include
runtime_library_dirs = $(brew --prefix openblas)/lib
EOF

pip3 install .
# cleanup
cd /tmp
rm -rf numpy_local

一个稍微简单的解决方案:

$ rm -v ~/Library/Caches/pip/wheels/<em i="7">/</em>/<em i="8">/</em>/<em i="9">numpy</em> # clear the pip wheel cache of any built numpy wheels

根据https://twitter.com/pradyunsg/status/1317081239526936576?s=20现在可以使用内置的pip命令来完成:

$ pip cache remove numpy
$ brew install openblas # make sure OpenBLAS is installed
$ # activate your pypy3 virtualenv
$ OPENBLAS="$(brew --prefix openblas)" pip install numpy # let numpy's setup.py know where OpenBLAS is installed

这具有额外的好处,即不需要重新构建轮子,并且 pypy3 上的任何未来pip install numpy都将起作用。

撇开变通方法不谈,为什么默认构建行为会产生甚至不能import的损坏的轮子? 无论哪种方式,构建这样一个损坏的工件似乎都是“设计使然”的错误; 构建结束时的自检如果发现自己处于这种状态就会中止,这将是一个受欢迎的补充。 (特别是如果它可以提供有用的错误消息,例如“try brew install openblas ”或类似的信息。)

在构建之后尝试导入听起来是个好主意。

如果找不到 openblas,为什么不干脆拒绝在 macOS 上构建?

除了 OpenBLAS 之外,还有各种有效的 blas 后端。 唯一无效的是加速。 不幸的是,macOS 没有提供一种方式来告诉我们他们正在提供 Accelerate,我们只能在运行时通过触发已知的错误计算来检测它。 如果您能弄清楚如何更早地检测 Accelerate,那就太好了。 到目前为止,我们最好的方法是检测符号链接,但这非常脆弱。

如果任何 python-poetry 用户遇到此线程,我只想补充一点,如果您将最后一行替换为OPENBLAS="$(brew --prefix openblas)" poetry add numpy@glyph的解决方案也同样有效

我已经尝试过以前版本的 numpy,它对我有用
pip3 安装 numpy==1.18.0

希望这有帮助

卸载并安装 1.18.0——对我有用! 对以上内容点赞^^

我在这里报告使用 openblas 的建议不起作用。 这会崩溃:

OPENBLAS="$(brew --prefix openblas)" pip install numpy
python -c 'import numpy'

# =>  RuntimeError: Polyfit sanity test emitted a warning, most likely due to using a buggy Accelerate backend. If you compiled yourself, see site.cfg.example for information. Otherwise report this to the vendor that provided NumPy.

虽然这没有任何问题:

pip install numpy==1.18.0
python -c 'import numpy'

@fny检查输出以查看 pip 是否使用缓存轮。 在这种情况下,您可能需要清除缓存。

@fny有关更新说明,请参阅https://github.com/numpy/numpy/issues/15947#issuecomment -686159427

任何人都可以提供一个链接,让人们可以阅读为什么 Accelerate 是一种不应该使用的糟糕 BLAS 实现? 我尝试在谷歌上搜索“为什么苹果加速不好”,但一无所获。

我不知道全面的故障在哪里,但 Accelerate 存在线程问题,一些错误的结果,并暴露了一个过时的 LAPACK 版本。

作为参考,此解决方案失败。 为什么这不起作用? 为什么这一切都是必要的?

@orome至于“为什么”问苹果。 他们是你从他们那里购买系统的人,并且正在运送有缺陷的软件,而 NumPy 的主要志愿者团队必须解决这些问题。 任何愤怒都应该针对他们,而不是针对我们。

@orome至于“为什么”问苹果......任何愤怒都应该针对他们,而不是针对我们。

这绝对是(再次)导演的地方!

这为我解决了问题。 (我用pip3替换了pip ... 今天的 numpy 版本将是 1.19.1)
https://gist.github.com/yatsu/47bdde35e8abbe7d14bbe730342aa9e0#file -numpy-openblas-macos-pip-sh

编辑:如果要点被删除,请粘贴完整的解决方案:)

# Setup HomeBrew if not already installed: https://brew.sh/
brew install openblas
mkdir /tmp/numpy_local
cd /tmp/numpy_local
pip3 download --no-binary :all: --no-deps numpy
unzip numpy-*.zip  # (assuming there's only one version in this folder)
cd numpy-1.19.1 # the version may be a later version than this

cat > site.cfg <<EOF
[openblas]
libraries = openblas
library_dirs = $(brew --prefix openblas)/lib
include_dirs = $(brew --prefix openblas)/include
runtime_library_dirs = $(brew --prefix openblas)/lib
EOF

pip3 install .
# cleanup
cd /tmp
rm -rf numpy_local

这在某种程度上对我不起作用。 我从源代码编译了 OpenBLAS 并将其安装在/opt/OpenBLAS ,并用/opt/OpenBLAS替换了每次出现的$(brew --prefix openblas) /opt/OpenBLAS 。 我的 Python 3 安装来自 Xcode 命令行工具,所以我使用pip3 install --user .而不是pip3 install . 。 除此之外,我完全遵循了脚本。 但是,在我运行python3 -c "import numpy" ,错误消息与以前完全一样:

RuntimeError:Polyfit 健全性测试发出警告,很可能是由于使用了有问题的 Accelerate 后端。 如果您自己编译,请参阅 site.cfg.example 以获取信息。 否则,将此报告给提供 NumPy 的供应商。
RankWarning:Polyfit 可能条件不佳

任何想法为什么会发生这种情况?

pip install pandas
pip3 install pandas
pip3 install pandas --no-build-isolation --no-cache-dir
sudo pip3 install pandas --no-cache-dir

问题描述

我已经通过 Homebrew ( brew install python3 ) 完成了 macOS Big Sur 的全新安装和 Python3.9 的全新安装。 之后,我使用brew install pip命令安装了 pip3 并且我想安装 Pandas,但我总是收到以下错误。 我已经尝试使用上面列出的所有命令在 macOS Big Sur 和 Python3 上安装 Pandas ...

任何人都可以帮忙吗? 这些是实际安装的唯一软件包:

套餐版本


点 20.2.4
设置工具 50.3.2
车轮 0.35.1

预期产出

pip install pandas

获取构建轮子的要求...错误
错误:命令出错,退出状态为 1:
命令:/ usr /本地的/ opt / [email protected]/bin/python3.9 /usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel的/ var /文件夹/ ZV / 0q58rjv549bd4qjdqlrwlvl40000gn/T/tmpzr3sthd6
cwd:/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-install-pvlaq6iq/pandas
完整输出(23 行):
init_dgelsd 初始化失败
回溯(最近一次调用最后一次):
文件“/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py”,第280行,在
主要的()
文件“/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py”,第263行,在main中
json_out['return_val'] = hook(**hook_input['kwargs'])
文件“/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py”,第 114 行,在 get_requires_for_build_wheel
返回钩子(config_settings)
文件“/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py”,第149行,在get_build_wheel中
返回 self._get_build_requires(
文件“/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py”,第130行,在require_build中
self.run_setup()
文件“/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py”,第253行,在run_setup
超级(_BuildMetaLegacyBackend,
文件“/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py”,第145行,在run_setup
exec(compile(code, __file__, 'exec'), locals())
文件“setup.py”,第 488 行,在
将 numpy 导入为 np
文件“/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/numpy/__init__.py”,第286行,在
引发运行时错误(味精)
RuntimeError:Polyfit 健全性测试发出警告,很可能是由于使用了有问题的 Accelerate 后端。 如果您自己编译,请参阅 site.cfg.example 以获取信息。 否则,将此报告给提供 NumPy 的供应商。
RankWarning:Polyfit 可能条件不佳


错误:命令出错了,退出状态1:在/ usr /本地的/ opt / [email protected]/bin/python3.9 /usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel /var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/tmpzr3sthd6 检查日志以获取完整的命令输出。

在这个问题Pandas#37880 中,他们说这是最新版本的 macOS 的一个

提前致谢!

同样的问题,同样的错误

这在 MacOS 11.0.1 Big Sur 上对我有用, Python 3.8.2

pip3 install --force-reinstall numpy\<1.19
pip3 install --upgrade wheel

brew install libjpeg # optional
pip3 install pillow # optional
pip3 install matplotlib

....

Successfully installed matplotlib-3.3.3 

此问题已关闭。 如果您将 MacOS 11 与从 HomeBrew 安装的 python 一起使用,则从 2020 年 11 月起,您应该使用brew install NumPy而不是pip install numpy 。 请不要在这里发表评论,如果仔细阅读 gh-17784 不能帮助您弄清楚发生了什么,请打开一个新问题。

这些步骤帮助我解决了这个问题:
https://gist.github.com/mohammadnassiri/31ca8f4f2298d8694a8327814631455c

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

dcsaba89 picture dcsaba89  ·  3评论

Levstyle picture Levstyle  ·  3评论

inducer picture inducer  ·  3评论

dmvianna picture dmvianna  ·  4评论

manuels picture manuels  ·  3评论