📍목표
- Python 프로젝트에서 패키지 관리하는 방법 알아보기
📍Python 프로젝트에서 의존성 관리 방법
Python에도 Node.js의 npm 처럼 pip 라는 패키지 매니저가 존재한다. pip 명령어를 통해 외부 패키지를 설치하고 삭제할 수 있다.
그런데, 가상환경에서 Python 프로젝트를 실행하는 경우, 패키지 정보가 담기는 가상환경(일반적으로 /venv 폴더) 폴더의 /lib 은 gitignore에 의해 공유되지 않는다.
그렇다면 Python 에서는 Node.js 진영의 package.json 처럼 의존성을 명시하는 문서가 없을까?
📍현재 프로젝트의 모든 패키지 목록 추출하기
찾아보니 pip freeze 명령어를 통해 현재 프로젝트의 의존성 리스트(버전 포함)를 터미널에 출력할 수 있었다
- 유저가 설치한 패키지만 표시된다(pip 같은 시스템 기본 패키지 등은 제외)
pip freeze
결과(예시)
annotated-types==0.7.0
anyio==4.4.0
black==24.8.0
click==8.1.7
fastapi==0.114.0
h11==0.14.0
idna==3.8
mypy-extensions==1.0.0
packaging==24.1
pathspec==0.12.1
platformdirs==4.3.2
pydantic==2.9.0
pydantic_core==2.23.2
sniffio==1.3.1
starlette==0.38.4
typing_extensions==4.12.2
tzdata==2024.1
uvicorn==0.30.6
이를 별도의 txt 파일로 출력하여 저장하는 것도 가능하다 (일반적으로 requirements.txt 에 저장한다)
pip freeze > requirements.txt
📍출력된 패키지 리스트대로 패키지 설치하기
프로젝트를 다른 사용자와 공유하거나, 배포하려면 출력된 리스트를 바탕으로 다시 패키지를 설치해야 한다. 이 때 아래 명령어를 실행한다.
pip install -r requirements.txt