본문 바로가기
Tip/Python

pigar vs pipreqs

by JavaPark 2025. 2. 24.

 

📌 1. pigar

자동화된 분석과 관리에 강점이 있는 도구

특징

  • 프로젝트 코드에서 사용된 import 문을 기반으로 종속성을 자동 추출하여 requirements.txt를 생성
  • PyPI를 통해 최신 패키지 버전을 자동 감지하여 requirements.txt에 추가
  • 프로젝트 폴더 내에서 실행하면 모든 서브디렉토리까지 탐색하여 필요한 패키지를 찾음
  • 캐시 기능이 있어서 한 번 찾은 패키지를 다시 분석할 때 속도가 빠름
  • 단순 import 기반 분석이라서 동적 import (예: importlib.import_module)는 추적 불가

설치 및 사용법

pip install pigar
pigar generate
  • 현재 디렉토리 내에서 종속성을 분석하고 requirements.txt를 생성함.
  • 특정 프로젝트 폴더를 지정하여 실행 가능:
    pigar generate -p /path/to/project
    

장점

  • 패키지 버전까지 자동으로 관리하여 최신 상태로 유지 가능
  • 캐시 기능 덕분에 반복 실행 시 속도가 빠름
  • 서브디렉토리까지 자동 검색하여 종속성을 놓칠 가능성이 적음

단점

  • 코드에서 사용된 import 문을 기반으로 분석하므로, setup.py나 pyproject.toml 같은 설정 파일을 활용하지 않음
  • importlib과 같은 동적 import는 분석하지 못함
  • 분석 속도가 pipreqs보다 느릴 수 있음

📌 2. pipreqs

가벼운 분석과 빠른 실행이 강점인 도구

특징

  • 프로젝트 코드에서 사용된 패키지 이름만 추출하여 requirements.txt를 생성 (버전 정보 없음)
  • 빠른 속도로 종속성을 분석하여 가벼운 프로젝트에 적합
  • .py 파일을 직접 검사하여 import 문에서 사용된 패키지만 리스트업
  • 패키지 버전 정보를 추가하려면 --savepath 옵션을 사용해야 함
  • importlib 같은 동적 import는 감지하지 못함

설치 및 사용법

pip install pipreqs
pipreqs /path/to/project --force
  • 지정된 프로젝트 폴더에서 종속성을 분석하고 requirements.txt를 생성
  • 기존 requirements.txt를 덮어쓰려면 --force 옵션을 사용
  • 버전 정보를 포함하려면:
    pipreqs /path/to/project --force --savepath requirements.txt
    

장점

  • 매우 빠른 실행 속도 (가벼운 프로젝트에 적합)
  • 폴더를 지정해서 특정 디렉토리만 분석 가능
  • requirements.txt 파일을 간단히 생성하는 용도로 적절

단점

  • 기본적으로 패키지 버전 정보를 포함하지 않음
  • setup.py 등의 추가 설정 파일을 참고하지 않음
  • importlib 같은 동적 import는 분석하지 못함
  • pigar보다 종속성 탐지가 단순하여 일부 패키지를 놓칠 가능성이 있음

비교 요약

기능 pigar pipreqs

패키지 분석 방식 코드에서 사용된 import 분석 코드에서 사용된 import 분석
버전 정보 포함 여부 ✅ 포함 ❌ 기본적으로 포함 안 함 (옵션 사용 가능)
속도 상대적으로 느림 (캐시 활용 가능) 매우 빠름
서브디렉토리 자동 탐색 ✅ 가능 ✅ 가능
동적 import 분석 ❌ 불가능 ❌ 불가능
설치 및 사용법 pigar generate pipreqs /path/to/project --force
추가 기능 최신 버전 자동 확인 간단한 requirements.txt 생성

🏆 어떤 경우에 어떤 도구를 써야 할까?

  1. 패키지 버전까지 포함하여 종속성을 완벽하게 관리하고 싶다면? → pigar
  2. 가볍고 빠르게 requirements.txt를 만들고 싶다면? → pipreqs
  3. 대규모 프로젝트에서 서브디렉토리까지 깊이 분석해야 한다면? → pigar
  4. 빠르게 종속성 목록만 생성하고, 이후 버전을 직접 관리하고 싶다면? → pipreqs

🎯 결론

  • 빠른 실행 속도가 필요하고, 버전 정보가 없어도 된다면 → pipreqs가 적합
  • 패키지 버전 관리까지 자동화하고 싶다면 → pigar가 적합

⚡ 추천: 프로젝트 초기에 가볍게 pipreqs를 사용하여 requirements.txt를 만들고, 나중에 pigar로 버전 정보를 포함해 업데이트하는 것도 좋은 방법입니다.