최근에 MacOS에서 Python 3.7을 설치하려고 했는데, 예상치 못한 오류를 마주쳤다. 특히 conda 버전이 23 이상이면 UnsatisfiableError가 발생하면서 원하는 버전 설치가 되지 않는다. 이 글에서는 이 문제의 원인과 해결 방법을 정리해보려고 한다 !

conda create --name ml python=3.7
위와 같이 python 3.7 버전을 이용하여 콘다 환경에서 가상환경을 설정하려 했다.
PackagesNotFoundError: The following packages are not available from current channels:
- python=3.7*
그랬더니! 이런 오류가 발생하였다.
이 문제는 conda/conda GitHub 이슈 #12206에서도 다뤄지고 있다. 핵심적인 원인은 다음과 같다.
• conda 23.x부터 패키지 해결 방식(solver)에 변경이 생김
• python 3.7은 이제 기본 채널에서는 지원되지 않거나, 메타데이터가 충돌함.
• 특히 conda-forge 채널이 우선순위에 없거나 설정이 잘못된 경우 발생함.
그리고 내가
conda create -n ml python=3.7 -c conda-forge
conda-forge 방법도 사용해봤는데, 아래와 같이 해결되지 않았었다.

아래 방법을 수행하면 MacOS에서도 python 3.7 환경을 정상적으로 만들 수 있다.
conda는 내부적으로 플랫폼(아키텍처)을 subdir이라는 설정 값으로 구분한다.
우리는 환경 단위(--env)로 이 값을 osx-64로 바꿔줘야 한다.
왜인지는 아래서 설명하겠다.
# 1. 비어있는 환경 생성
conda create -n ml
# 2. 환경 활성화
conda activate ml
# 3. 현재 환경에 대해서 아키텍처를 osx-64로 설정
conda config --env --set subdir osx-64
# 4. 원하는 python 및 기타 패키지 설치
conda install python=3.7 numpy pandas

# 1. 비어있는 환경 생성
conda create -n <프로젝트명>
conda create -n ml
위와 같이 우선 가상환경을 생성한다 !
우선 가상환경을 확인해보았다.
conda info -envs

아까 생성한 ml이 존재한다.
이제 활성화하자!
conda activate ml

난 지금 macOS의 M3 칩을 쓰고 있다. M3 칩은 ARM 기반(osx-arm64)이라 conda가 기본적으로 ARM용 패키지를 찾는데, python 3.7은 ARM용으로 제공되지 않아서 설치가 안 된다. 그래서 subdir 설정을 통해 Intel Mac용(osx-64) 패키지를 설치하도록 바꾸어줘야 한다 !!
아래의 명령어로 사용하면 된다.
conda config --env --set subdir osx-64

이제 가상환경도 잘 들어왔고 설정도 마쳤으니 원하던 python을 깔자!
conda install python=3.7

잘 됐지롱 !
굿