在新的 MacBook Air M1 上安装 Pandas 时遇到问题 [关闭]

Posted

技术标签:

【中文标题】在新的 MacBook Air M1 上安装 Pandas 时遇到问题 [关闭]【英文标题】:Trouble installing Pandas on new MacBook Air M1 [closed] 【发布时间】:2021-03-13 00:13:50 【问题描述】:

我最近买了一台新的 MacBook Air M1,但我在安装 Pandas 时遇到了问题,因为预构建的二进制文件不适用于 macOS/arm64。如何在 Apple Silicon Mac 上安装 Pandas?

【问题讨论】:

我不应该问(也就是说,这应该已经在你的问题中了),但是有什么问题呢? 【参考方案1】:

也许为时已晚。但是,如果您不想使用rosetta2或moniconda,唯一对我有用的解决方案是从源代码安装

python3 -m pip install virtualenv
virtualenv -p python3.8 venv
source venv/bin/activate
pip install --upgrade pip
pip install numpy cython
git clone --depth 1 https://github.com/pandas-dev/pandas.git
cd pandas
python3 setup.py install

【讨论】:

这对我不起作用。我在 M1 Mac 上运行 Big Sur,但出现错误“无法构建 numpy。错误:无法为使用 PEP 517 且无法直接安装的 numpy 构建 whell。” 我认为对于python3.8,你不应该有这个错误。对于python3.9,您只需使用错误提示,从源代码安装 git clone github.com/numpy/numpy.git && cd numpy && python3 setup.py install 天才,也为 Django 的 numpy 和 scikit learn 拯救了我的一天,谢谢 感谢这完全有帮助,花了 4 和 1/2 小时试图解决这个问题。非常幸运地掌握了这些知识。 Dis 对我不起作用,仍然出现同样的错误:venv/lib/python3.8/site-packages/pandas-1.4.0.dev0+264.g9c0a1ebec6-py3.8-macosx-11.4-arm64.egg/pandas/_libs/interval.cpython-38-darwin.so: mach-o, but wrong architecture【参考方案2】:

什么对我有用:

pip3 install cython
OPENBLAS="$(brew --prefix openblas)" MACOSX_DEPLOYMENT_TARGET=11.1 pip3 install numpy --no-use-pep517
OPENBLAS="$(brew --prefix openblas)" MACOSX_DEPLOYMENT_TARGET=11.1 pip3 install pandas --no-use-pep517

【讨论】:

我处于 arm64 模式。这不适用于 Python 3.9.x,但它确实适用于 Python 3.8.11。谢谢。【参考方案3】:

有两种方法可以做到这一点。但两者的基本过程是相同的。

方法一

打开一个终端窗口。运行arch。结果应该是arm64。 现在做arch -x86_64 zsh。这将在终端内创建一个 x86 模拟 zsh 会话。现在如果你运行arch 命令,结果应该是i386

现在执行pip install pandaspip3 install pandas(无论哪个命令的版本正确)。这将起作用。 执行exit 命令退出模拟的zsh 会话。

您也可以在 x86 仿真下执行单个命令,而无需创建仿真 zsh 会话。运行arch -x86_64 pip install pandas。这将在 x86_emulation 下运行 pip 命令,但终端仍处于本机 arm 环境中。


方法二

使用模拟 x86 环境的 Rosetta 2 打开终端应用程序。 然后执行pip install pandaspip3 install pandas(无论哪个命令的版本正确) 这应该可行。

这个技巧适用于几乎所有在 ARM 架构中尝试安装失败的 python 包


使用 Rosetta 2 打开终端应用程序

    关闭终端应用程序 在 Finder 中查找终端应用程序(通常位于 Macintosh HD/Applications/Utilities) 二次点击终端图标>>获取信息 选中标记为使用 Rosetta 打开的复选框 现在启动一个终端窗口(新的终端窗口将使用 Rosetta 仿真打开)

编辑-1: 如果您在 x86 仿真下安装软件包,您还必须在 x86 仿真下运行您的 python 代码。如果你尝试在原生 ARM 环境下运行 python,那么你安装 x86 版本的包会抛出架构不匹配错误。

【讨论】:

arch -arm64 pip install pandasarch -arm64 pip install -r requirements.txtarch -arm64 zsh && poetry install 这取决于你的代码库是如何设置的【参考方案4】:

这些文章中的大多数都未能解决“不想”在 Rosetta 下运行的问题。 Apple 的 TensorFlow fork 在原生 M1 模式下工作,但没有 Pandas 与之匹配。 如果您选择在 Rosetta 下运行,那么您将无法找到匹配的 TensorFlow。 这是一个双输的局面。

【讨论】:

如果您使用的是 (mini)conda,则不正确。您可以使用conda install,这似乎确实有效。【参考方案5】:

您只需使用--no-use-pep517 标志,就可以毫无问题地安装pandas。

这是我在笔记本电脑上的安装方式:

~/Documents/projects/m-proj                                                                                                                                               
❯ pip install cython --no-use-pep517 
Collecting cython
  Using cached Cython-0.29.22-py2.py3-none-any.whl (980 kB)
Installing collected packages: cython
Successfully installed cython-0.29.22

~/Documents/projects/m-proj                                                                                                                                               
❯ pip install numpy --no-use-pep517
Collecting numpy
  Using cached numpy-1.20.1.zip (7.8 MB)
Using legacy 'setup.py install' for numpy, since package 'wheel' is not installed.
Installing collected packages: numpy
    Running setup.py install for numpy ... done
Successfully installed numpy-1.20.1

~/Documents/projects/m-proj                                                                                                                                           
❯ pip install pandas --no-use-pep517
Collecting pandas
  Using cached pandas-1.2.3.tar.gz (5.5 MB)
Collecting python-dateutil>=2.7.3
  Using cached python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
Requirement already satisfied: pytz>=2017.3 in ./venv-trans/lib/python3.9/site-packages (from pandas) (2021.1)
Requirement already satisfied: numpy>=1.16.5 in ./venv-trans/lib/python3.9/site-packages (from pandas) (1.20.1)
Requirement already satisfied: six>=1.5 in ./venv-trans/lib/python3.9/site-packages (from python-dateutil>=2.7.3->pandas) (1.15.0)
Using legacy 'setup.py install' for pandas, since package 'wheel' is not installed.
Installing collected packages: python-dateutil, pandas
    Running setup.py install for pandas ... done
Successfully installed pandas-1.2.3 python-dateutil-2.8.1

【讨论】:

这适用于numpy-1.20.1,但不适用于python3.9所需的numpy-1.20.2。有点僵局,这似乎超级依赖时间,因为现在我可以使用 pyenv 在 M1(arch arm64)上安装 python3.9,但不能安装 python3.8。在 arm64 上获得 python pandas 会很好。【参考方案6】:

Miniconda 是迄今为止最简单的选择。

brew install --cask miniforge
conda create -n myenv python=3.8
conda init zsh
conda activate
conda install pandas

如果您需要旧版本(conda-forge 中的 arm64 不可用)

brew install --cask miniforge
conda create -n myenv python=3.8
conda init zsh
conda activate
pip install cython
curl -L https://github.com/pandas-dev/pandas/archive/v1.1.2.zip --output pandas.zip  
unzip pandas.zip     
cd pandas-1.1.2 
python3 setup.py install
rm pandas.zip
rm -rf pandas-1.1.2

【讨论】:

【参考方案7】:

查看这篇文章Apple M1 — Matplotlib, Python, and Jupyter Lab 或这篇文章(同一作者)Apple M1, Python, Pandas, and Homebrew

也许你只需要用 Rosetta 运行终端(第二篇文章指出了这一点)

【讨论】:

这篇文章基本上只是说为 iTerm2 打勾“从 Rosetta 开始”。这对我没有帮助。【参考方案8】:
    为 OS X arm64(Apple Silicon)安装 conda miniforge

https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh

    然后创建虚拟环境并安装你需要的包 conda create -n myenv python=3.6 conda activate myenv conda install numpy conda install pandas

【讨论】:

【参考方案9】:

所以我找到了解决方案。显然,即使我选中了使用 Rosetta 打开术语的框,它也不是第一次这样做。我终于通过在术语上执行“arch”发现了这一点,它返回“arm64”,而不是“i386”。重新启动显然使“rosetta”选择棒,然后我能够成功地“pip3 install pandas”。当然,在原生 arm 模式下安装它会更好。感谢大家的指点。

【讨论】:

不同但相关的问题:您对如何安装 tensorflow 有什么建议吗? “pip3 install storage.googleapis.com/tensorflow/mac/cpu/…”返回“错误:tensorflow-2.4.0-cp38-cp38-macosx_10_14_x86_64.whl 不是该平台支持的***。”【参考方案10】:

参考本页 https://ittone.ma/ittone/python-install-pandas-on-mac-m1-big-sur-into-multiple-virtualenv/

    pip 安装 cython git 克隆https://github.com/numpy/numpy.git cd numpy python3 setup.py 安装 git 克隆https://github.com/pandas-dev/pandas.git cd 熊猫 python3 setup.py 安装

【讨论】:

你遇到了什么错误?【参考方案11】:

@user505117,您可能会觉得这很有帮助:https://github.com/apple/tensorflow_macos

【讨论】:

以上是关于在新的 MacBook Air M1 上安装 Pandas 时遇到问题 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为 App Academy 的新 Macbook Air (M1) 安装正确的 Ruby / benz

如何在 MacBook Air M1 上安装 python 和工作 ide

安装 python@3.7 MacBook Air m1 问题

我无法在我的 macbook air m1 上安装 PostgreSQL 的 JDBC 驱动程序

MacBook Air M1 行动起来

MacBook Air M1 运行 go test