'Cannot install Python 3.7 on osx-arm64
I am trying to create a new environment with Python 3.7 using Conda like:
conda create -n qnn python=3.7
I got following errors:
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.
Why is Python 3.7 apparently unavailable?
System Details
This is on an Apple Silicon (osx-arm64) machine running macOS.
Solution 1:[1]
No native builds available
Since Python 3.8 had been released for about a year when Apple Silicon hit the market, Python 3.7 builds for osx-arm64 were never part of the regular build matrix for Conda Forge.
Workaround: Emulate
Immediate alternatives for using 3.7 on Apple Silicon systems would be to emulate x86_64 with Rosetta or use a container system, e.g., Docker.
Creating osx-64 environments
Similar to what one does for running win-32 environments on x86_64 machines, one can create osx-64 environments like
## 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
?? Important Note: Be sure to always activate this environment before installing packages. Otherwise, the default CONDA_SUBDIR value (osx-arm64) may be active and could result in mixing architectures in the same environment.
Note that MacOS will automatically recognize the architecture and run through Rosetta - one need not do anything special.
Requesting native build
Longer term, you could try requesting that the python-feedstock
include a 3.7 build for osx-arm64. However, 3.7.12 (Sept. 2021) was technically the final feature release, and it has now entered the maintenance-only phase (see PEP 537). Also, other packages that build Python-version-specific variants would not be built for osx-arm64, so even if one had python=3.7
, the packages wouldn't be there (at least not through Conda). Basically, I wouldn't bet on anyone taking this up.
Solution 2:[2]
Not sure if this is the best strategy, but running
CONDA_SUBDIR=osx-64 conda
worked for my use case.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | sebpretzer |