본문 바로가기

카테고리 없음

서피스 프로 X (Windows on Arm) 에서 matplotlib 설치하기

논문, 필기 머신 겸 간단한 파이썬 개발용으로 쓸 요량으로 서피스 프로 X를 샀습니다.

배터리도 오래 가고 화면도 크고 참 좋았지만... 생각보다 x64 호환성의 벽은 높았습니다(ㅠㅠ)

 

Dropbox for desktop이 안 돌아가서 UWP dropbox 앱으로 해결 (거의 웹 접속 수준이지만).

Onedrive는 탐색기 확장까지 잘 되던데, 빨리 드랍박스도 ARM 네이티브 앱이 나왔으면...

 

그런데 믿었던 간단한 파이썬 개발도 영 쉽지 않네요. 먼저 그 간단해 보이는 matplotlib 설치부터 막혔습니다.

matplotlib을 설치하려면 먼저 numpy도 깔아야 하고, pillow도 깔아야 하고, ...

 

먼저 현재 Pypi에서는 Windows ARM64용 whl을 제공하지 않고 있기 때문에, numpy (를 포함한 대부분의 파이썬 라이브러리)를 설치하려면 직접 소스에서 빌드해야 합니다.

 

Windows on Arm now supported in Python 3.11 Release | Blog | Linaro 를 참고해 빌드 환경을 구축해 줍니다.

거창해 보이지만 어려울 건 없고, Visual studio 를 Desktop development with C++ 옵션을 선택해서 설치해 주면 됩니다.

그러면 MSVC, CMake 등등이 설치되니 c 코드로 된 numpy 등등 라이브러리를 직접 빌드할 수 있습니다ㅎㅎ

 

이때 Windows 11 SDK까지 모두 설치해 주셔야 합니다. 2기가씩 먹길래 설치 안 해도 되겠지? 하고 빼고 설치했다가 다시 설치했습니다.

 

 

이후 pip install numpy 를 즐겁게 쳐 주게 되면...

warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파 일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.

라고 뜨면서 빌드가 실패합니다(ㅎㅎ).

 

warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. (tistory.com)

 

warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다.

AirSim 빌드하면서 아래 error C2220과 함께 발생했던 경고이다. dana-study-log.tistory.com/entry/error-C2220-%EB%8B%A4%EC%9D%8C-%EA%B2%BD%EA%B3%A0%EB%8A%94-%EC%98%A4%EB%A5%98%EB%A1%9C-%EC%B2%98%EB%A6%AC%EB%90%A9%EB%8B%88%EB%8B%A4 error C2220

dana-study-log.tistory.com

대략 검색해 보면 C 소스 파일을 적절한 인코딩으로 다시 저장해 주면 된다고들 하시는 것 같지만,

이렇게 되면 pip를 쓰더라도 항상 다운로드한 파일 경로를 찾아 일일이 헤더를 다시 저장해 줘야 할 것 같아 패스.

 

다음과 같이 윈도우 코드페이지를 CP949에서 UTF-8로 변경하는 방법으로 해결했습니다.

 

Windows 설정 - 시간 및 언어 - 언어 및 지역 - 기본 언어 설정을 클릭해 줍니다.

이후 시스템 로캘 변경 - Beta: 세계 언어 지원을 위해 Unicode UTF-8 사용을 체크해 줍니다.

 

이후 pip install numpy를 해 주면 제대로 설치되는 것을 보실 수 있습니다!

다음 난관은 pillow인데요, 빌드하려고 해 보면 빌드에 필요한 dependency인 zlib을 찾을 수 없다고 나옵니다.

 

찾아보니 pillow 빌드 시에는 libjpeg, zlib, ... 등이 필요하다고 하고, 가능하면 docs에서도 빌드된 whl을 설치할 것을 권장하고 있습니다. (Installation - Pillow (PIL Fork) 9.4.0 documentation)

 

Installation

Warnings: Python Support: Pillow supports these Python versions. Newer versions:,,,,,,,, Python, 3.11, 3.10, 3.9, 3.8, 3.7, 3.6, 3.5,,, Pillow >= 9.3, Yes, Yes, Yes, Yes, Yes,,,, Pillow 9.0 - 9.2,,...

pillow.readthedocs.io

 

하지만 Pypi에는 ARM64용 whl이 없는데... 하고 있던 중 https://github.com/python-pillow/Pillow/issues/6679#issuecomment-1296068430  에서 천사같은 개발자 중 한 명이 직접 whl을 빌드해서 올려 준 걸 발견했습니다!!

 

바로 https://github.com/python-pillow/Pillow/files/9894939/Pillow-9.3.0-cp311-cp311-win_arm64.whl.zip 를 다운받아서 압축을 풀어준 후, pip install <압축을 푼 whl 파일 경로> 로 설치해 줍니다.

 

이후 pip install matplotlib 을 하게 되면 문제없이 설치됩니다~

 

배터리가 오래 가는 건 좋지만, ARM 기기에서 Windows를 쓰는 건 아직 시기상조인 걸로... ㅠㅠ

파이썬 라이브러리 하나 쓰자고 직접 빌드해서 써야 할 줄은 몰랐네요.