HOWTO · Python

Python 모듈 버전을 확인하는 방법

importlib.metadata, 모듈의 __version__ 속성, pip show 또는 pkg_resources를 사용해 설치된 Python 패키지의 버전을 확인하는 방법을 알아봅니다.

이 페이지의 내용

Python에서 설치된 패키지의 버전을 확인하려면 패키지의 배포 이름과 함께 importlib.metadata.version()을 사용하세요. 터미널에서 확인하려면 검사하려는 환경을 가진 Python 인터프리터로 python -m pip show PACKAGE를 실행하세요. 임포트 이름과 배포 이름은 다를 수 있으므로 패키지의 설치 안내나 패키지 메타데이터에 나와 있는 이름을 사용하세요.

importlib.metadata를 사용해 설치된 배포의 버전 가져오기

importlib.metadata는 설치된 배포의 메타데이터를 읽습니다. requests와 같은 배포 이름을 전달하세요. import 문에 쓰는 이름이 항상 같은 것은 아닙니다. 이 예제는 현재 환경이 반환하는 첫 번째 배포의 이름과 버전을 출력합니다.

from importlib import metadata

distributions = list(metadata.distributions())
if distributions:
    distribution = distributions[0]
    print(f"{distribution.metadata['Name']}: {distribution.version}")
else:
    print("No installed distributions found.")
pip: 26.2.1

알려진 패키지 하나에 대해서는 metadata.version("requests")를 호출하세요. 표준 라이브러리 importlib.metadata 모듈을 해당 Python 환경에서 사용할 수 없는 경우, 별도로 설치된 백포트는 임포트 경로 importlib_metadata를 사용합니다. 그 조회 API의 이름도 version()입니다. 사용 가능 여부는 환경에 따라 달라지므로 이 글에서는 특정 Python 버전을 기준으로 가정하지 않습니다.

조회 실패는 해당 배포가 활성 환경에 설치되어 있지 않거나, 이름이 잘못되었거나, 명령이 패키지가 설치된 환경과 다른 Python 환경을 사용하고 있다는 의미일 수 있습니다. 결론을 내리기 전에 배포 이름과 인터프리터를 확인하세요.

사용 가능한 경우 모듈의 __version__ 속성 확인하기

일부 모듈은 버전을 __version__ 문자열로 노출합니다. 예를 들어, 해당 속성을 제공하는 모듈을 임포트한 뒤 print(module.__version__)로 읽으세요. 속성이 존재할 때 편리한 확인 방법이지만, Python 모듈에 대한 보편적인 요구 사항의 일부는 아닙니다. 이름으로 설치된 배포의 메타데이터가 필요할 때는 위의 표준 라이브러리 메타데이터 조회가 더 적합합니다.

pip show로 패키지 확인하기

터미널에서 python -m pip show PACKAGE를 사용하면 설치된 배포 하나의 세부 정보를 표시할 수 있습니다. 이 명령 예제는 여기에서 실행되지 않습니다. 예를 들어 python -m pip show requests를 실행하세요. 결과에서 Version 줄을 찾으세요. pip를 선택한 Python의 모듈로 실행하면 명령을 해당 인터프리터의 환경에 맞추는 데 도움이 됩니다. 맨 pip 명령은 다른 설치를 가리킬 수 있습니다. pip show는 패키지 메타데이터를 보고하며, 패키지를 설치하거나 업데이트하지 않습니다.

레거시 환경에서는 pkg_resources 사용하기

pkg_resources를 사용하는 환경에서는 get_distribution()을 호출하기 전에 이를 임포트하세요. 모듈의 임포트 이름과 다를 수 있는 배포 이름을 전달하세요. 이 독립적인 예제는 pkg_resources를 사용할 수 있을 때 설치된 pip 배포를 확인합니다. 이 API는 일부 환경에는 없을 수 있습니다.

try:
    import pkg_resources
except ImportError:
    print("pkg_resources is unavailable in this environment.")
else:
    try:
        print(pkg_resources.get_distribution("pip").version)
    except pkg_resources.DistributionNotFound:
        print("pip is not installed in this environment.")

이는 레거시 대안입니다. 새 코드에서는 사용할 수 있는 경우 importlib.metadata를 선호하세요.