pipdeptree
pipdeptree는 파이썬(Python) 환경에 설치된 패키지들의 의존성(Dependency) 관계를 계층적인 트리(Tree) 구조로 시각화하여 출력하는 오픈소스 명령줄 인터페이스(CLI) 유틸리티이다. 기존 파이썬의 패키지 관리자인 pip가 패키지 목록을 평면적으로만 나열하는 한계를 보완하기 위해 개발되었다.
주요 특징은 다음과 같다.
- 상하위 의존성 시각화: 특정 패키지가 실행되기 위해 요구하는 하위 패키지들을 들여쓰기 형태의 구조로 터미널에 렌더링한다. 반대 옵션(Reverse)을 적용하여 특정 패키지에 의존하고 있는 상위 패키지 목록을 추적할 수도 있다.
- 버전 충돌 및 순환 참조 탐지: 패키지 간의 요구 버전이 일치하지 않는 충돌 상태(Conflict)나, 서로가 서로를 참조하는 순환 의존성(Circular dependency)이 발생할 경우 시각적인 경고 메시지를 출력하여 디버깅을 돕는다.
- 다양한 출력 포맷 지원: 기본 터미널 텍스트 출력 외에도, 데이터를 구조화하여 내보낼 수 있는 JSON 형식을 지원한다. 또한 Graphviz(DOT 포맷) 형식 출력을 지원하여 의존성 구조를 시각적 이미지 파일(PNG, PDF 등)로 변환할 수 있다.
- 환경 호환성: 가상 환경(Virtualenv, venv 등)에 완전히 호환되며, 전역 파이썬 환경의 간섭 없이 활성화된 가상 환경 내의 패키지 정보만 격리하여 분석한다.
파이썬 환경에서 패키지 목록 및 의존성을 확인하거나 관리하는 기본 도구들과의 비교 데이터는 다음과 같다.
| 특징 | pipdeptree | 기본 pip (list / freeze) | Poetry |
|---|---|---|---|
| 개발 프로젝트 주체 | tox-dev 커뮤니티 | PyPA (Python Packaging Authority) | Python Poetry 프로젝트 |
| 의존성 계층 시각화 | 트리 구조 출력 기본 지원 (순방향/역방향) | 미지원 (일차원적인 평면 리스트 출력) | poetry show --tree 명령어로 지원 |
| 의존성 충돌 탐지 알림 | 분석 후 터미널에 시각적 경고(Warning) 출력 | 분석 기능 없음 | 설치 및 Lock(해결) 단계에서 원천 차단 |
| 주요 분류 및 목적 | 설치된 패키지 구조 분석 전용 유틸리티 | 패키지 다운로드 및 설치 관리 기본 패키지 관리자 | 의존성 해결 기능이 포함된 통합 패키징 시스템 |
출처 데이터:
- Python Package Index (PyPI). “pipdeptree: Command line utility to show dependency tree of packages.” (https://pypi.org/project/pipdeptree/)
- tox-dev GitHub Repository. “pipdeptree - A command line utility to display dependency tree of the installed Python packages.” (https://github.com/tox-dev/pipdeptree)
- pipdeptree Official Documentation. “Usage & Examples.” (https://pipdeptree.readthedocs.io/en/latest/)