Python 프로젝트에서 requirements.txt 자동 생성 방법: pipreqs와 pigar의 완전 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- Python 개발자 및 DevOps 엔지니어: 의존성 관리 자동화 도구 사용법 학습
- 난이도: 중간 (기초부터 고급 기능까지 포함)
핵심 요약
- pip freeze의 한계:
pip freeze
는 가상 환경 외부 패키지나 불필요한 종속성을 포함할 수 있음 - pipreqs: 실제 코드의
import
명령어를 분석해 프로젝트별 요구사항만 추출 - pigar: 복잡한 프로젝트 분석, 패키지 검색, 버전 불일치 점검 기능 제공
섹션별 세부 요약
1. pip freeze의 문제점
pip freeze
는 가상 환경 설치된 모든 패키지를 포함- 프로젝트에 직접적인 영향을 주지 않는 시스템 패키지 포함 가능
- 새 프로젝트 생성 시 사전 설치 없이 requirements.txt 생성 불가
2. pipreqs 사용법
- 가상 환경 생성 후
pip install pipreqs
설치 pipreqs project
명령어로 코드 내 import 기반 requirements.txt 생성- 예시:
matplotlib==3.9.1
,numpy==2.0.0
등 구체적 버전 정보 포함
3. pigar의 고급 기능
- Flask 애플리케이션을 대상으로
pigar generate
로 요구사항 생성 - Lambda 프로젝트에서
boto3==1.34.142
,colorlog==6.8.2
등 스펙 맞춤형 패키지 추출 pigar check
로 패키지 버전 불일치 점검,pigar search
로 패키지 검색 가능
4. pipreqs vs pigar 비교
| 기능 | pipreqs | pigar |
|--------------|--------------|---------------|
| 속도 | ⚡ 매우 빠름 | 🔄 보통 |
| 정확성 | ✅ 높음 | ✅ 매우 높음 |
| 로컬 임포트 | ❌ 제한적 | ✅ 우수 |
| 추가 기능 | ❌ 기본 제공 | ✅ 패키지 검색, 버전 점검 |
5. 최적화된 사용 패턴
- 프로덕션:
pigar gen -f requirements.txt .
- 개발 환경:
pigar gen -f requirements-dev.txt .
- CI/CD 통합:
pipreqs . --force
로 자동화된 의존성 점검 설정
결론
- pipreqs는 간단한 프로젝트에, pigar는 복잡한 프로젝트에 적합
pipreqs . --scan-notebooks
와pigar gen --with-referenced-comments
로 노트북 및 주석 기반 분석 활용- CI/CD 파이프라인에 자동 생성 스크립트 통합하여 의존성 관리 효율성 극대화