본문 바로가기
PROGRAMMING/Python

[PYTHON] 프로젝트 의존성 관리하기: pip freeze vs pipreqs

by HYUNHP 2024. 4. 7.
728x90
반응형

안녕하세요, HELLO

Python 프로젝트를 진행하면서, 프로젝트 의존성 관리는 중요한 부분 중 하나입니다. 의존성 관리를 통해 프로젝트의 재현성을 보장하고, 팀원 간 혹은 배포 환경 간에 동일한 개발 환경을 유지할 수 있습니다. 이 글에서는 pip freeze와 pipreqs를 사용한 의존성 관리 방법을 정리하고자 합니다.


STEP 1. 'pip freeze > requirements.txt' 사용법

 

STEP 2. 'pipreqs' 사용법


STEP 1. 'pip freeze > requirements.txt' 설명

pip freeze 는 현재 환경에 설치된 모든 패키지와 그 버전을 리스트업 하는 명령어입니다. 이 정보를 requirements.txt 파일로 리디렉션함으로써, 나중에 동일한 환경을 쉽게 재구성할 수 있습니다.

 

pip freeze > requirements.txt


■ 주의사항

- pip freeze 는 현재 활성화된 Python 환경에 설치된 모든 패키지를 포함합니다. 따라서, 가상 환경을 사용하지 않는 경우, 시스템 전체의 패키지가 목록에 포함될 수 있습니다.
- 프로젝트에 실제로 사용되지 않는 패키지까지 포함될 수 있으므로, 생성된 requirements.txt 는 수동으로 검토하고 조정할 필요가 있습니다.

- 또한 최상단 라이브러리에 필요한 종속된 라이브러리 등 정보 모두 다 포함하게 됩니다.

 

 

STEP 2. 'pipreqs' 사용법

 

pipreqs 는 프로젝트의 코드를 분석하여 실제로 사용되는 패키지만을 requirements.txt 파일로 생성해 주는 도구입니다. 이는 pip freeze와 달리, 프로젝트에 필요한 최소한의 의존성만을 리스트업합니다.

■ 사용법

pipreqs /path/to/project


■ 주의사항

- pipreqs는 프로젝트 폴더 내의 Python 파일( .py )을 분석합니다. 따라서, 코드 내에서 직접 import 된 패키지만을 고려합니다.

- 주피터 노트북 (Jupyter Notebook)의 경우는 pipreqs를 통해서 분석이 불가능하여, 이 경우에는 py파일로 변환이 필요합니다.


■ Jupyter Notebook도 원하는 경우

Jupyter Notebook( .ipynb ) 파일을 분석하기 위해서는 먼저 nbconvert를 사용하여 .py 파일로 변환해야 합니다.

 

jupyter nbconvert --to script YourNotebook.ipynb
pipreqs /path/to/project

 

Jupyter notebook 내 한국어 주석 등으로 인코딩이 cp949로 변환될 경우, pipreqs 사용 시 에러가 나올 수 있기에 주의하시기 바랍니다.


■ conda 환경에서 사용할 경우

conda 환경에서 pipreqs를 사용하기 전에 해당 환경을 활성화하고, pipreqs를 설치해야 합니다.

 

conda activate your_env
pip install pipreqs
pipreqs /path/to/project


■ 주의사항

conda 환경을 사용하는 경우, pipreqs가 conda로 설치된 패키지를 인식하지 못할 수 있습니다. 따라서, 생성된 requirements.txt 파일은 추가적인 검토가 필요할 수 있습니다.

 

반응형

 

만약에 requirements 작성 이후에, 새로운 환경에서 설치하는 방법에 궁금하면 아래 글을 참고하시면 됩니다.

2024.04.06 - [PROGRAMMING/Python] - [PYTHON] pip 설치 시 quiet로 로그 정리: Silent Installation 가이드

 

[PYTHON] pip 설치 시 quiet로 로그 정리: Silent Installation 가이드

안녕하세요, HELLO Python 프로젝트를 진행하면서 다양한 외부 라이브러리의 도움을 받는 것은 흔한 일입니다. 이런 라이브러리들을 관리하기 위해 requirements.txt 파일에 의존하는 경우가 많은데요,

hyunhp.tistory.com


■ 마무리

Python 프로젝트의 의존성을 관리하는 것은 프로젝트의 성공적인 배포와 유지 관리에 매우 중요합니다. pip freeze와 pipreqs는 각기 다른 상황과 요구 사항에 맞는 유용한 도구들입니다.

좋아요댓글 부탁드리며,

오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)

감사합니다.

반응형

댓글