Language/Python

[Python] 현재 absl-py 설치시 파이썬 버전 문제가 발생하는 버그 해결하기

RTFM;

  • absl-py 패키지 0.8 버전에서 파이썬 버전을 확인하는 코드에서 버그 발견
  • 문제 해결법
    • 파이썬 버전을 3.9로 낮추기
    • pip install에 --ignore-requires-python 옵션 추가하기  
    • 해당 패키지가 absl-py 0.12.0 버전으로 변경할 때까지 기다리기

 

아무래도 Tensorflow Extended 스터디그룹이 미완으로 마치는 바람에 해당 프로젝트를 등한시 해버렸다. 그래서 다시 TFX 프로젝트를 수행하려고 환경을 세팅하는데 다음과 같은 문제가 발생했다.

Collecting absl-py<0.9,>=0.7 (from tfx)
    Using cached absl-py-0.8.1.tar.gz (103 kB)
    Preparing metadata (setup.py) ... error
    error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [6 lines of output]
         Traceback (most recent call last):
             File "", line 2, in
             File "", line 34, in
             File "/tmp/pip-install-yiqxxkla/absl-py_75985eaee91340df87745640c0cbe751/setup.py", line 34, in
                 raise RuntimeError('Python version 2.7 or 3.4+ is required.')
         RuntimeError: Python version 2.7 or 3.4+ is required.
         [end of output]

분명 설치된 파이썬 버전은 3.11인데 지금 파이썬 버전을 문제삼고 있다.

그래서 검색해보니 다행이도 비슷한 문제가 stack overflow에 올라와있다.

 

해당 글에 따르면,

현재 abseil-py 0.8 버전에서 python 버전을 비교할 때 문제가 발생했다.

python 버전을 ('3', '10') 과 같은 방식으로 받아 처리하는데

문제는 마이너 버전을 비교할때 string 타입으로 직접 비교해버렸다.

그래서 '10'이 '4'보다 작기에 현재 abseil-py 0.8 버전은 파이썬 3.10 이상의 버전에서 설치할 수 없다.

물론 해당 버그는 즉시 고쳐젔지만 일부 파이썬 패키지가 abseil-py 0.8 버전에 의존하고 있기에

abseil-py 패키지를 정확하게 0.8 버전에 의존하고 있는 패키지는 파이썬 3.10 이상에서 설치할 수 없다.

 

그러다보니 사용할 패키지가 abseil-py 버전을 바꿀때까지 기다리거나, 본인이 사용하는 파이썬 버전을 3.9로 내리거나, pip 설치시 --ignore-requires-python 옵션을 추가해 무시해야 한다.

 

참고로 해당 버그가 2020년에 고쳐져 0.12.0 버전에 반영됐다. 근데 해당 문제가 아직도 발생하고 있는 듯 하다. 링크에 올린 글에서도 2022년에 맨션되고 있으며, 가져온 stack overflow 글은 2023년에 작성됐다. 그리고 나는 이 일을 2024년에 최신 버전의 tfx를 설치하다가 발견했다. 널리 사용되는 패키지의 작은 버그가 얼마나 큰 영향을 주는지 알 수 있다.