在 Mac M1 上安装 python 包时出现问题

bea*_*yze 2 python macos

我想安装 github 存储库的需求文件中列出的 python 包。但是,我在将这些 python 包安装到 conda 环境中时遇到问题。

首先,我用Miniforge3-MacOSX-arm64安装了conda,它支持arm64架构的M1。但是,一些特定的 python 软件包(例如 onnxruntime)我无法安装,因为我遇到了这样的错误消息:

ERROR: Could not find a version that satisfies the requirement onnxruntime
ERROR: No matching distribution found for onnxruntime 
Run Code Online (Sandbox Code Playgroud)

我假设对于那些特定的 python 软件包,M1 尚不支持。

因此,我采取了另一种方法。我将终端设置为“用 Rosetta 打开”。计划是安装 intel x86_64 架构的应用程序,并让 Rossetta 创建二进制文件以在 arm64 上运行。然后我卸载了arm64的miniforge并安装了x86_64的miniforge,名为Miniforge3-MacOSX-x86_64。通过该设置,我能够安装需求文件的所有列出的 python 包,并且pip freeze我还可以确认它们已安装。但是,我无法使用这些 python 包。例如,如果我想运行 pytest,我会收到以下错误:

zsh: illegal hardware instruction pytest
Run Code Online (Sandbox Code Playgroud)

我假设 Rossetta 会处理这个问题,我也可以在 arm64 上使用 x86_64 的应用程序。但不知怎的,它不起作用。我尝试了很多不同的事情,但没有想法。

有谁知道问题是什么?我也非常感谢您提供如何在 Mac M1 上正确设置 python 环境的建议和建议。

Pra*_*kal 5

两天前我也遇到了同样的问题,我正在使用m1 pro. 我试图仅使用安装 python 软件包,pip但出现了许多错误,然后我决定使用conda.

就我而言,它有效,这是我到目前为止所做的:

首先在你的 zsh 中启用open with rosetta。进而,

# create environment in conda
conda create -n venv python=3.8 # with your python version

# activate
conda activate venv
Run Code Online (Sandbox Code Playgroud)

并访问 conda 网站查找软件包: check packages

假设如果您正在寻找pytest软件包,那么您可以搜索它,您将得到这样的结果,其中包含可用的软件包和频道。

在此输入图像描述

您需要启用该特定通道才能使用以下命令获取该包:

# config channel
conda config --append channels conda-forge # available channel name

# then install
conda install --yes --file requirements.txt
Run Code Online (Sandbox Code Playgroud)

确保您pytest的文件中具有相同的版本requirements.txt(eg:pytest==6.2.5)

希望这能起作用,如果不能尝试使用类似的方式安装它pippip install -r requirements.txt 在环境启用后。