Apple/Mac

[Mac/Python] ARM Mac에서 Pygame 라이브러리 사용하기 (Using pygame library in M1 ARM Mac)

wookiist 2020. 12. 25. 02:32

Pygame을 찾아서

Intel을 떠나 ARM Mac으로 이주하게 된 지 얼마 되지 않았지만, 벌써부터 곳곳에서 개발 환경 구축에 어려움을 겪고 있다. 오늘도 어김없이 하드 한 시간을 보냈고, 기억을 위해 기록을 해보고자 한다.

 

pygame 라이브러리를 받아다가 게임이나 만들어볼까 하던 차에,

$ python3 -m pip install pygame을 해보았지만, 아래에서 보게 될 에러를 내뿜고 있었다.

 

에러를 해결하는게 귀찮아서, pygame github release를 확인해보니 intel만 제공하고 있는 것이 아닌가.

 

저는 macosx_11_0_arm64.whl 이 필요하다구요!!!!!!

눈물을 머금고 구글신께 의탁해 M1 선배님들께서 빌드를 해놓으시지 않을까 하는 일말의 희망을 갖고 열심히 검색해보았지만 허사였다.

 

눈 앞이 캄캄해지고, 가슴이 턱 막혔다.

별 수 없다는 생각으로, 스스로 빌드를 하는 길을 택했다.

빌드 실패

일단 release 페이지에서 Source code(tar.gz) 파일을 받아서 압축을 해제하고,

$ python3 setup.py bdist_wheel을 수행했지만, 당연하게도 실패했다.

 

처음에는 SDL2 관련 패키지가 없어서 문제가 발생했다.

간단하게 brew로 설치해주었다.

$ brew install -s sdl2

 

다음은 freetype 패키지가 없다는 문제였다.

여기까지도 순조롭게 homebrew에서 받아다가 사용했다.

$ brew install -s freetype

 

문제는 지금부터였다.

freetype 설치했는데요.. 저한테 왜 그러세요 자유형...

(사실 고수님들이라면, make 과정에서 정확한 inclue path와 library path를 잡아주지 않았기 때문에 발생하는 오류라는 걸 금방 아셨겠지만..)

 

어쩌다보니 pyenv install 버그 때문에 많이 봤던 include 패스와 library 패스 잡아주는 로그가 에러 바로 위에 떠있는 걸 보고 뭔가 깨닫게 됐다.

아무리 봐도 지금 freetype을 이상한 곳에서 참조하는 느낌적인 느낌.

찾았다!

검색을 해보니, 스택 오버 플로우에 이런 이유로 freetype 관련한 해결방법이 올라와있는 걸 볼 수 있었다. 포인트가 2점밖에 없으셔서.. 눈에 띄진 않았지만 어떻게든 내 눈에 띄고 말았다.. (stackoverflow.com/a/18308136)

 

본래는 Matplotlib를 빌드하는 데 발생한 문제를 해결하기 위한 솔루션이라, 목적이 좀 다르긴 하지만, 결국 freetype과 연관된 문제를 해결하는 방식이었던 것 같아 적용해보게 되었다.

 

여기서 영감을 받아 우선, brew로 설치한 freetype의 include path와 library path가 어디에 위치하는지 찾아보았다.

나는 arm 용 brew를 받기 위해서 /opt/homebrew 디렉터리를 이용 중이다. 그러다 보니 다음의 디렉터리에 위치하고 있었다.

아~ freetype이 요기잉네?

옳다구나 하고 앞서 소개한 답변에서 LDFLAGS에는 Library Path를, CPPFLAGS에는 Include Path와 Include Path 내의 freetype2 파일을 추가로 Include 했다. 말이 길지만, 명령어로 보려면 한 줄 요약 파트를 보면 된다.

 

아무튼 이렇게 실행을 했더니... 드디어...! 빌드가 된다....

저기 써져있는 macosx_11_0_arm64가 얼마나 자랑스럽던지...

Poetry를 이용한 pygame whl 설치

아. 이제 poetry를 통해서 설치만 해주면 된다.

 

성공을 직감하고 poetry add를 수행하였지만, 무슨 일인지 다음 화면처럼 intel whl 파일이 함께 있어야 하는 것 같았다.

왜.. 왜 intel이 필요한거니..? 설마 로제타를 쓴 건 아니겠지... 모르겠다..

영문은 모르겠지만, 같이 놓고 poetry add를 수행하니까....

끼야아악!!!!

성공했다. 드디어. 오랜만에 느껴보는 이 짜릿함.

VSCode한테 잡힐 뻔 한(사실 내가 실수한) 이야기

이제 VSCode에서 python 인터프리터 버전을 pyenv로 설치한 3.9-dev (dev를 사용하고 있는 것에 대해서도 할 말이 많다..)을 잡아주고,

두근거리는 마음으로 'import pygame'을 해보는데.. 어.. 이럴 리가 없는데..

이게 진짜일리 없어..

문득, 인터프리터를 잘못 잡은 게 아닌가 해서 검색해보니. venv 디렉터리를 기준으로 잡힌 인터프리터를 설정해주면 되는 거였다. 

poetry는 이번에 처음 써보게 돼서.. 많이 배운 것 같다.

 

아무튼 인터프리터를 정상적으로 잡고 나서 import를 시도해보는데... 이전과는 손맛부터 다르게 느껴진다.

무려 자동완성에 pygame 두둥등장!!

아.. 자동완성이라니..... 세상에..ㅠㅠㅠㅠ

아 이제 드디어 개발을 시작할 수 있다(?)

시간이 많이 지나긴 했지만, 오래간만에 재미있는 시간이었다. 앞으로도 잘 안 되는 패키지 있으면 그냥 가져다가 이슈 해결해가면서 만들어서 써야겠다!

 

이 생존 일지가 누군가에게 도움이 될 수 있으면 좋겠다.

이건 m1 mac에서 pygame을 띄웠다는 자랑 아닌 자랑을 위한 캡쳐..

 

한 줄 요약

다음 커맨드를 실행하세요.

가쥬아~

반응형