没有可用的本机构建
由于 Apple Silicon 上市时 Python 3.8 已发布约一年,Python 3.7 是为osx-arm64从来都不是 Conda Forge 常规构建矩阵的一部分。
解决方法:模拟
在 Apple Silicon 系统上使用 3.7 的直接替代方案是模拟 x86_64Rosetta https://support.apple.com/en-us/HT211861或者使用容器系统,例如 Docker。
创造osx-64环境
如同一个人跑步时做什么win-32x86_64 机器上的环境 https://stackoverflow.com/a/58014896/570918, 可以创建osx-64环境如
## create empty environment
conda create -n py37
## activate
conda activate py37
## use x86_64 architecture channel(s)
conda config --env --set subdir osx-64
## install python, numpy, etc. (add more packages here...)
conda install python=3.7 numpy
⚠️重要提示:在安装软件包之前请务必激活此环境。否则,默认 CONDA_SUBDIR 值 (osx-arm64)可能会处于活动状态,并可能导致在同一环境中混合架构。
请注意,MacOS 将自动识别该架构并通过 Rosetta 运行(一旦安装 https://support.apple.com/en-us/HT211861) - 不需要做任何特别的事情。
YAML
通过 YAML 环境定义,可以使用CONDA_SUBDIR
环境变量用于在创建环境时临时设置平台。同样,我们仍然应该设置特定于环境的subdir
创建后立即选择。
## create environment from YAML
CONDA_SUBDIR=osx-64 conda env create -n py37 -f py37.yaml
## activate
conda activate py37
## use x86_64 architecture channel(s)
conda config --env --set subdir osx-64
请求本机构建
从长远来看,你可以尝试请求 https://github.com/conda-forge/python-feedstock/issues认为python-feedstock
包括 3.7 版本osx-arm64。然而,3.7.12(2021 年 9 月)在技术上是最终的功能版本,现在已进入仅维护阶段(请参阅PEP 537 https://www.python.org/dev/peps/pep-0537/)。此外,构建特定于 Python 版本的变体的其他包也不会被构建osx-arm64,所以即使有python=3.7
,包不会在那里(至少不会通过 Conda)。基本上,我不会打赌有人会接受这个。