안녕하세요, 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 freeze와 pipreqs는 각기 다른 상황과 요구 사항에 맞는 유용한 도구들입니다.
좋아요와 댓글 부탁드리며,
오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)
감사합니다.
'PROGRAMMING > Python' 카테고리의 다른 글
[Python] 문자, 유니코드로 서로 변환하는 ord, chr 함수 정리, 설명 (0) | 2024.10.01 |
---|---|
[Python] 데이터를 마크다운으로: DataFrame.to_markdown() 활용법 (0) | 2024.05.25 |
[PYTHON] pip 설치 시 quiet로 로그 정리: Silent Installation 가이드 (0) | 2024.04.06 |
[PyTorch] DataLoader로 훈련 데이터 메타 정보 및 데이터 정보 얻기 (0) | 2024.03.06 |
[PYTHON] Conda Install 시 발생하는 PackagesNotFoundError 해결 방법 (2) | 2023.12.16 |
댓글