Joonas' Note

Joonas' Note

설치된 python의 지원 가능한 platform 확인 본문

개발/python

설치된 python의 지원 가능한 platform 확인

2022. 12. 1. 12:50 joonas

    패키지를 설치하다보면, 모종의 이유로 wheel을 직접 다운로드하는 경우가 있다.

    wheel을 직접 다운로드 하려고하면, 설치하려는 환경에 따라서 whl 파일이 엄청나게 많은데,
    그럴 때마다 운영체제, 비트, python 버전 등을 전부 한번씩 확인하게 된다.

    잘못된 whl 파일로 설치하려고 하면 아래와 같은 에러를 만나서 무척 피곤해진다.

    ~~.whl is not a supported wheel on this platform.

    2018년에 TensorFlow의 GitHub repository에서 동일한 질문이 있었고 https://github.com/tensorflow/tensorflow/issues/9722 ,
    아래와 같이 엄청 간단한 커맨드로 쉽게 확인할 수 있었다.

    Linux/Mac

    $ python -c "from pip import pep425tags;print(pep425tags.supported_tags)"

    결과는 아래와 같이 나온다.

    [('cp38', 'cp38', 'linux_x86_64'),
     ('cp38', 'abi3', 'linux_x86_64'),
     ('cp38', 'none', 'linux_x86_64'),
     ('cp37', 'abi3', 'linux_x86_64'),
     ('cp36', 'abi3', 'linux_x86_64'),
     ('cp35', 'abi3', 'linux_x86_64'),
     ('cp34', 'abi3', 'linux_x86_64'),
     ('cp33', 'abi3', 'linux_x86_64'),
     ('cp32', 'abi3', 'linux_x86_64'),
     ('cp38', 'none', 'any'),
     ('cp3', 'none', 'any'),
     ('cp37', 'none', 'any'),
     ('cp36', 'none', 'any'),
     ('cp35', 'none', 'any'),
     ('cp34', 'none', 'any'),
     ('cp33', 'none', 'any'),
     ('cp32', 'none', 'any'),
     ('cp31', 'none', 'any'),
     ('cp30', 'none', 'any'),
     ('py3', 'none', 'linux_x86_64'),
     ('py38', 'none', 'any'),
     ('py3', 'none', 'any'),
     ('py37', 'none', 'any'),
     ('py36', 'none', 'any'),
     ('py35', 'none', 'any'),
     ('py34', 'none', 'any'),
     ('py33', 'none', 'any'),
     ('py32', 'none', 'any'),
     ('py31', 'none', 'any'),
     ('py30', 'none', 'any')]

    근데 이건 Linux 계열의 Bash 에서만 되는 것 같고 Windows의 경우에는 동작하지 않는다.

    Windows

    Windows의 경우에는 https://stackoverflow.com/questions/50248524/module-pip-has-no-attribute-pep425tags 를 참고하면 된다.

    pip 내부에서 stable하진 않지만 어떻게 접근해서 확인하는 방법은 있는 것 같다. 위 글에서 pip 19.3 버전 기준으로 알려준 방법이다.

    from pip._internal.models.target_python import TargetPython
    print(TargetPython().get_tags())

    Windows 10 + pip 21.2.4 (python 3.10) 환경에서 실행해봤는데 잘 된다.

    Comments