无法在 osx-arm64 上安装 Python 3.7

you*_*ark 34 python conda conda-forge

我正在尝试使用 Conda 创建一个带有 Python 3.7 的新环境,例如:

conda create -n qnn python=3.7 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Collecting package metadata (current_repodata.json): done
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

  - python==3.7

Current channels:

  - https://conda.anaconda.org/conda-forge/osx-arm64
  - https://conda.anaconda.org/conda-forge/noarch

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.
Run Code Online (Sandbox Code Playgroud)

为什么 Python 3.7 明显不可用?


系统详情

这是在运行 macOS 的 Apple Silicon ( osx-arm64 ) 机器上。

mer*_*erv 73

没有可用的本机构建

\n

由于 Apple Silicon 上市时 Python 3.8 已发布大约一年,因此针对osx-arm64 的Python 3.7 构建从未成为 Conda Forge 常规构建矩阵的一部分。

\n

解决方法:模拟

\n

在 Apple Silicon 系统上使用 3.7 的直接替代方案是使用Rosetta模拟 x86_64或使用容器系统,例如 Docker。

\n

创建osx-64环境

\n

在 x86_64 计算机上运行win-32环境类似,可以创建osx-64环境,例如

\n
## create empty environment\nconda create -n py37\n\n## activate\nconda activate py37\n\n## use x86_64 architecture channel(s)\nconda config --env --set subdir osx-64\n\n## install python, numpy, etc. (add more packages here...)\nconda install python=3.7 numpy\n
Run Code Online (Sandbox Code Playgroud)\n
\n

\xe2\x9a\xa0\xef\xb8\x8f 重要提示:请务必在安装软件包之前激活此环境。否则,默认的 CONDA_SUBDIR 值 ( osx-arm64 ) 可能处于活动状态,并可能导致在同一环境中混合架构。

\n
\n

请注意,MacOS 将自动识别该体系结构并通过 Rosetta 运行(安装后) - 无需执行任何特殊操作。

\n

YAML

\n

通过 YAML 环境定义,可以CONDA_SUBDIR在创建环境时使用环境变量临时设置平台。同样,仍然应该subdir在创建后立即设置特定于环境的选项。

\n
## create environment from YAML\nCONDA_SUBDIR=osx-64 conda env create -n py37 -f py37.yaml\n\n## activate\nconda activate py37\n\n## use x86_64 architecture channel(s)\nconda config --env --set subdir osx-64\n
Run Code Online (Sandbox Code Playgroud)\n
\n

请求本机构建

\n

从长远来看,您可以尝试请求包含osx-arm64python-feedstock的 3.7 版本。然而,3.7.12(2021 年 9 月)在技术上是最终的功能版本,现在已进入仅维护阶段(请参阅PEP 537)。此外,构建特定于 Python 版本的变体的其他包不会为osx-arm64构建,因此即使有,这些包也不会在那里(至少不会通过 Conda)。基本上,我不会打赌有人会接受这个。python=3.7

\n

  • 谢谢!有效!我在“conda create -n demo python=3.7”之前使用了“conda config --env --set subdir osx-64”。 (4认同)

小智 11

不确定这是否是最好的策略,但运行

CONDA_SUBDIR=osx-64 conda

适用于我的用例。