在新的 MacBook Air M1 上安装 Pandas 时遇到问题

Dan*_*son 28 macos installation pandas apple-m1

我最近买了一台新的 MacBook Air M1。我在安装 Pandas 时遇到问题。是否有任何特定于新处理器的东西会阻止安装 Pandas?

小智 38

也许为时已晚。但是,如果您不想使用 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
Run Code Online (Sandbox Code Playgroud)

  • 这对我不起作用。我在 M1 Mac 上运行 Big Sur,收到错误“无法构建 numpy。错误:无法为使用 PEP 517 且无法直接安装的 numpy 构建 whells。” (2认同)

Luk*_*lor 16

什么对我有用:

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
Run Code Online (Sandbox Code Playgroud)


Ash*_*kan 13

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


Sar*_*uru 13

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

方法一

打开终端窗口。运行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。这将pip在 x86_emulation 下运行命令,但终端保留在本机 arm 环境中。


方法二

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

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


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

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

编辑 1:如果您在 x86 仿真下安装软件包,则必须也在 x86 仿真下运行您的 python 代码。如果您尝试在本机 ARM 环境中运行 python,那么您安装 x86 版本的包将引发架构不匹配错误。


小智 7

您可以只使用--no-use-pep517标志,并且可以毫无问题地安装熊猫。

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

~/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
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说适用于“numpy-1.20.1”,但不适用于 python3.9 所需的“numpy-1.20.2”。有点僵局,这似乎超级依赖时间,因为现在我可以使用 pyenv 在 M1(arch arm64)上安装 python3.9,但不能安装 python3.8。如果能在 arm64 上安装 python 和 pandas 就太好了。 (2认同)

Def*_*or6 6

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

brew install --cask miniforge
conda create -n myenv python=3.8
conda init zsh
conda activate
conda install pandas
Run Code Online (Sandbox Code Playgroud)

如果您需要旧版本(在 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
Run Code Online (Sandbox Code Playgroud)


aut*_*tya 5

  1. 为 OS X arm64 安装 conda miniforge(Apple Silicon)

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

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


wiz*_*_vm 4

查看这篇文章Apple M1 \xe2\x80\x94 Matplotlib、Python 和 Jupyter Lab或这篇文章(同一作者)Apple M1、Python、Pandas 和 Homebrew

\n

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

\n