본문 바로가기

시행착오 노트

MacOS Big Sur에서 poetry로 패키지 설치안될 때

배경

BigSur가 나온지 그래도 이제 어느정도 된 듯 싶어 버전 올렸다.
UI도 좀 더 둥글둥글 해지고 이뻐져 맘에 들고 있던 차... poetry로 파이썬 패키지를 설치하다가 문제를 발견한다.

[다음 버전을 사용 중이다.]

- MacOS Big Sur 11.2.3
- Poetry 1.1.4

문제

cryptography 라는 패키지를 poetry 로 설치하면 문제가 등장한다.

poetry로 cryptography 설치하려고 하면 나는 에러

이 에러의 끝에 가보면 결국 다음과 같은 에러를 보게된다.

error: can't find Rust compiler

찾아보니 공식 문서에 설명되어 있기로 이 패키지를 설치하는데는 Rust compiler가 필요하다고 한다.
그래 뭐 그럴 수 있지... 근데 뭐 그럼 내가 Rust를 설치해야 하는건가?

[열 받는거]

열 받는건 Big Sur 이전 버전인 Catalina에서는 전혀 문제가 없었다는 것이다.
Big Sur로 올라와서 이런다...

패키지 공식 Github의 README에서 Installation 부분을 보았다.

별도로 rust를 설치하란 말은 없다. 그냥 pip install 하라고 나올 뿐.
그래서 혹시...? 싶어서 poetry가 아닌 가상환경에 진입 후 pip로 직접 설치해봤다.

음 그렇다. 졸라게 잘 설치된다.
그냥 poetry로 설치하면 안되는 거였다.

사실 이와 비슷한 걸로 또 grpcio가 있다. 얘도 poetry로 설치하면 안되는데 pip로 설치하면 잘 깔린다...

검색 좀 하다 알게된 건데 poetry에 이런 이슈가 다음처럼 계속 리포팅 되고 있었다.

다들 자신들만의 해결 방법을 내고 있다. 다만 뭔가 지지고 뽕짝하는 느낌이라 맘에들지 않는다. 따라해도 안되는 경우도 많았다.
사실 poetry shell 로 들어가서 pip install 하면 당장 설치는 하겠지만 하나도 안 poetry 스러운 방법이고, 이럴거면 poetry 쓰는 이유가 없다. 어떻게 하면 poetry add 로만 잘 설치할 수 있을까?


해결

위 링크 중 세 번째 이슈를 쭈욱 살펴보면 그나마 깔끔한 해결 방법이 나온다.

export SYSTEM_VERSION_COMPAT=1

이 환경변수의 의미는 다음과 같다고 한다.

Setting SYSTEM_VERSION_COMPAT=1 instructs macOS to return 10.16 for any system version lookups, which fixes the issues with older versions of https://github.com/pypa/packaging.

즉 시스템에서 macOS 10.16 버전 (Big Sur는 11.x다)을 바라보게 하는 것이다.
사실 근본적인 해결은 아니고 임시 방편 정도인듯 하다.
아무튼 이렇게하고 다시 poetry로 cryptography 설치를 시도하면 아래처럼 잘 설치한다.

이럴 때 뭔가 기쁘기도 하고 열받기도 한다.

후... pip 보다 스타 수도 많고 1점 대로 올라온지도 좀 되었는데 종종 이렇게 잘지만 크리티컬한 버그가 왜이렇게 있나 싶다...
poetry 써야 되나? .. (근데 이만한 또 다른 대안이 없음)

[Big Sur로 올리고 cmake 문제]

위에서 따로 적진 않았는데, Big Sur로 올리고 패키지 설치하다가 cmake 관련 에러를 본적이 있다.
이 때 xcode commandline tools을 지우고 재설치하면 된다.

다음 명령어로 삭제 및 재설치가 가능하다.

$ rm -rf /Library/Developer/CommandLineTools
$ xcode-select --install