如何在Mac M1上安装多个Python版本

5

我已安装Python 3.9.2,因为Python.org推荐它支持ARM64。

之后我使用命令python3 -m venv py39创建了一个虚拟环境。

现在我需要另一个环境,但要使用Python 3.8.8,因为Tensorflow仅支持3.8版本。我应该如何创建另一个虚拟环境,并同时保留原来的3.9环境呢?如果让我使用conda,那么我的搜索结果显示,conda是否支持Mac M1 ARM64是不确定的。

我发现有很多人提出了同样的问题,但针对Windows系统的答案都很老,例如:Use different Python version with virtualenv,那个帖子已经发表11年了。


从文档中可以看出,Apple M1的完全官方支持始于3.9.1版本:从3.9.1版本开始,Python现在完全支持在macOS 11.0(Big Sur)和基于ARM64架构的Apple Silicon Mac上进行构建和运行。(新特性) - BoarGules
4个回答

3

你是否有坚持使用 conda 的原因?

我问这个问题是因为有更简单的方法来获得隔离的 Python 环境,这可能会在需要进行 M1 迁移时加快速度。

我建议至少查看以下内容:

如果你必须使用 conda,似乎存在一些相关的帖子:如何在 M1 Mac 上本地运行 Python 3.9.1?


1
我猜你的意思是它们可以在 M1 芯片的 Mac 上本地运行。对吗? - Kenji Noguchi
是的,它是苹果 M1 芯片,conda 不支持 ARM64。 - Maged
我没有尝试使用conda,因为它不支持Mac M1的ARM64。 - Maged
这个问题是否与此非常相似:https://dev59.com/41EG5IYBdhLWcg3weOkT - Justin Rice

1
我购买了M1,并开始苦苦挣扎于包和设置。虽然M1非常快,但我遇到了太多问题,其中一个问题是在英特尔上使用Python环境非常容易。最终,我通过使用Miniforge解决了这个问题。
以下是我遵循的步骤:
brew install miniforge

然后使用conda初始化zsh shell

conda init zsh 

最后,使用以下命令实例化所需的Python环境,该命令将安装所有依赖项。
conda create -n .venv python=3.7.6

然后最后激活环境。
conda activate .venv

1

在尝试以上解决方案后我仍然存在问题,但这些方法对我无效。

bash-5.1$ conda activate .venv

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run

    $ conda init <SHELL_NAME>

Currently supported shells are:
  - bash
  - fish
  - tcsh
  - xonsh
  - zsh
  - powershell

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.

我之前用zsh,但切换到bash shell后一切都开始正常工作了。


0

我发现,使用pyenvminiforge,即使是像3.8这样的旧版本,在M1上使用conda也没有任何问题。

brew update
brew install pyenv
pyenv install miniforge3-4.10
pyenv global miniforge3-4.10
conda create -n new_env python=3.8
conda activate new_env
conda install poetry
poetry new project
cd project
poetry add open3d

通过这种方式,您可以安装任何包,并以我测试过的任何方式使用conda。 当然,您可以像通常一样使用conda install {package}而不是使用peotry。


但是我们无法安装Python2(例如python=2.7)。你试过了吗? - Anh-Thi DINH
没问题,这对我有效。你需要输入 python=2。然后它会安装 2.7.15。如果你能复现就好了。 - lewis206
我无法运行,它显示“PackagesNotFoundError:当前渠道中无法获取以下软件包:python=2”。:( - Anh-Thi DINH
顺便说一下,我认为你的“miniforge”和我的有些不同。我是直接从官方github页面安装的,而不是通过pyenv。我刚刚通过pyenv安装了miniforge,但我的“旧版本”仍然存在。你能告诉我如何使用pyenv的miniforge来创建一个新的conda环境吗? - Anh-Thi DINH
当然,我会更新帖子,让它更加清晰。但是我不确定它在后台是如何工作的。可能它的运行速度不如其他版本快。但至少它能够正常工作。 - lewis206

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接