我最近购买了一台新的MacBook Air M1,但是我在安装Pandas时遇到了问题,因为macOS/arm64没有可用的预编译二进制文件。我该如何在Apple Silicon Mac上安装Pandas?
我最近购买了一台新的MacBook Air M1,但是我在安装Pandas时遇到了问题,因为macOS/arm64没有可用的预编译二进制文件。我该如何在Apple Silicon Mac上安装Pandas?
也许已经太晚了。但对我来说唯一有效的解决方案是从源代码进行安装,如果你不想使用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
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
- NullPointer我的有效方法:
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
有两种方法可以实现这一点。但两种方法的基本过程是相同的。
打开终端窗口。运行arch
命令。结果应该是arm64
。
然后执行arch -x86_64 zsh
命令。这将在终端内创建一个x86模拟的zsh会话。现在如果你运行arch
命令,结果应该是i386
。
现在执行pip install pandas
或pip3 install pandas
命令(哪个命令有正确的版本)。这将起作用。
执行exit
命令退出模拟的zsh会话。
你也可以在不创建模拟的zsh会话的情况下在x86模拟下执行单个命令。运行arch -x86_64 pip install pandas
命令。这将在x86模拟下运行pip
命令,但终端保留在本地的arm环境中。
使用Rosetta 2打开终端应用程序,这将模拟一个x86环境。
然后执行pip install pandas
或pip3 install pandas
命令(哪个命令有正确的版本)
这应该可以工作。
这个技巧对于几乎所有在ARM架构下安装失败的Python包都适用。
使用Rosetta 2打开终端应用程序
编辑-1: 如果您在x86仿真环境下安装了软件包,则还必须在x86仿真环境下运行Python代码。如果您尝试在本机ARM环境下运行Python,则该软件包将抛出架构不匹配错误,而该软件包是为x86版本安装的。
arch -arm64 pip install pandas
or arch -arm64 pip install -r requirements.txt
or arch -arm64 zsh && poetry install
- Juanarch -x86_64 pip3 install pandas
解决了问题! - shredEngineer大多数这些文章没有涉及到“不想”在Rosetta下运行的问题。Apple的TensorFlow分支可以在本地M1模式下工作,但是没有与之匹配的Pandas。 如果选择在Rosetta下运行,则无法找到匹配的TensorFlow。 这是一个赢不了的局面。
conda install
,它似乎是有效的。 - Gerard你只需要使用--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
上可以工作,但是在numpy-1.20.2
上不行,而这是python3.9所需的。这似乎是一个非常时间相关的问题,因为现在我可以使用pyenv在M1(arch arm64)上安装python3.9,但无法安装python3.8。能够在arm64上获得Python和Pandas将是很好的事情。 - PeterKMiniconda目前是最简单的选项。
brew install --cask miniforge
conda create -n myenv python=3.8
conda init zsh
conda activate
conda install pandas
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
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
所以我找到了解决方案。 显然,即使我勾选了使用Rosetta打开术语的框,第一次它也没有执行。 最终我是通过在术语上执行“arch”才发现这一点,它返回了“arm64”,而不是“i386”。 重新启动显然使“rosetta”选择生效,然后我才能成功地“pip3 install pandas”。当然,在本机arm模式下安装它会更好。 感谢大家提供的指针。
请查看这篇文章 Apple M1 — Matplotlib、Python 和 Jupyter Lab 或者这篇文章(同一作者)Apple M1、Python、Pandas 和 Homebrew。
也许你只需使用 Rosetta 在终端中运行(第二篇文章指出了这一点)
zsh
,并按照常规安装程序进行操作。虚拟环境的方法对我仍然不起作用。 - Vipin Menon参考此页面 https://ittone.ma/ittone/python-install-pandas-on-mac-m1-big-sur-into-multiple-virtualenv/