[Python] M1 맥북에서 Python 설치하기

짧은 설명

긴 설명

Apple은 성능개선을 위하여 CPU 설계를 변경하였습니다. 그동안 사용하던 Intel Chipset(이하 x86)에서 Apple Silicon(이하 ARM)으로 변경하였습니다. 아키텍쳐가 변경되었기 때문에 Intel 기준으로 만들어진 모든 프로그램들이 동작하지 않습니다. 이를 위해 Apple에서는 Rosetta2 번역기를 제공하여 불편함을 없앴습니다. 자동으로 x86 머신코드를 ARM64 머신코드로 변환하고 실행시켜 줍니다.

설치방법

Intel 칩셋용 Homebrew를 설치후 Intel용 Pyenv를 설치하고 Python을 설치하도록 하겠습니다.

1) Roestta2 설치

/usr/sbin/softwareupdate --install-rosetta너무 느리면 아래 명령어로 설치하세요
/usr/sbin/softwareupdate --install-rosetta agree-to-license

2) Homebrew for ARM설치

ARM용 Homebrew를 설치합니다. /opt/homebrew에 ARM용 Homebrew가 설치됩니다. (이하 Mac brew)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

3) Homebrew for X86 설치

Intel용 Homebrew를 설치합니다. /usr/local/Homebrew에 Intel용 Homebrew가 설치됩니다. arch -x86_64 명령어로 머신 환경을 X86으로 변경하여 brew를 설치할 수 있게 해줍니다. (이하 Intel brew)

arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"# 안될경우 아래코드를 실행
arch -x86_64 zsh
cd /usr/local && mkdir homebrew
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
Homebrew 설치 스크립트, 환경에 따라 설치 경로가 다르다.
# Intel brew로 패키지를 설치해서 Rosetta2로 에뮬레이팅하려면 아래 명령어를 사용
arch -x86_64 /usr/local/homebrew/bin/brew install <package name>
# Mac brew로 패키지를 설치하려면 아래 명령어를 사용
/opt/homebrew/bin/brew install <package name>

4) Alias와 Path를 추가

사용 편의성을 높이기 위해 alias와 path를 설정해줍니다. 이제 ibrew 명령어로 인텔 환경에서 패키지를 받고 빌드할 수 있으며, mbrew로 애플 네이티브 패키지를 받고 설치할 수 있습니다.

# Alias
echo "ibrew='arch -x86_64 /usr/local/bin/brew'" >> ~/.zshrc
echo "mbrew='arch -arm64e /opt/homebrew/bin/brew'" >> ~/.zshrc
# Path 이렇게 설정하면 네이티브 패키지를 우선 찾고 없을 경우 인텔기반 버전을 찾습니다.
echo "export PATH=\"/usr/local/bin:$PATH\"" >> ~/.zshrc
echo "export PATH=\"/opt/homebrew/bin:$PATH\" >> ~/.zshrc

5) Pyenv 설치

Pyenv는 다양한 버전의 파이썬을 쉽게 설치하고 버전을 변경할 수 있도록 도와줍니다. Intel brew를 통해 pyenv를 설치해줍니다.

# 아래 명령어를 실행하면 Intel brew의 환경변수를 커널에 export 해줍니다.
eval "$(ibrew shellenv)"
# Intel brew로 Pyenv를 설치합니다.
ibrew install pyenv

Python 3.X 설치

3.9.1 버전 미만의 파이썬은 arm64 칩셋을 지원하지 않습니다. 따라서 빌드 환경을 Intel chipset으로 변경하고 Pyenv의 python을 설치해줍니다.
(여기서는 3.6.8 버전을 지정하였으며, Mac Os 11(Big sur)에서 빌드를 지원하는 패치코드를 추가하여 설치합니다.)

arch -x86_64 pyenv install --patch 3.6.8 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)

부가 설명

Arch

arch는 머신의 아키텍쳐를 출력하거나, 프로그램 빌드시 머신 아키텍쳐를 변경해주는 명령어입니다.

#아키텍쳐명 / 설명
i386 32-bit intel
x86_64 64-bit intel
x86_64h 64-bit intel (haswell)
arm64 64-bit arm
arm64e 64-bit arm (Apple Silicon)
(좌) Python3.6.8 버전 .configure / (우) Python 3.9.1 버전 .configure

참고자료

--

--

Blog https://chrisjune.dev Work for www.29cm.co.kr

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store