서론
Prolog
파이썬 프로젝트를 하다 보면 setup.py와 requirements.txt 이 두 가지 파일을 자주 만나게 됩니다:
이 둘은 **모두 "패키지 설치와 관련 있는 파일"**이지만,
역할은 완전히 다릅니다.
requirements 만 알고 있다가 setup 검색해보다 헷갈려서 포스팅글로 정리해봤다.
헷갈릴 수 있지만, 용도와 목적을 알면 어느 상황에 어떤 걸 써야 하는지 금방 이해할 수 있다.
본론
requirements.txt는 무엇인가요?
requirements.txt는 이 프로젝트를 실행하려면 어떤 외부 라이브러리가 필요한지를 정리한 파일입니다.
requests==2.31.0
beautifulsoup4>=4.12.0
selenium
보통 pip install -r requirements.txt 명령어로 설치합니다.
이 파일은 아래와 같은 상황에서 사용합니다:
- 협업자가 프로젝트를 클론했을 때 필요한 패키지를 한 번에 설치하도록
- 배포할 때 동일한 환경 구성을 유지하기 위해
- CI/CD에서 자동으로 환경 세팅 시
즉, 개발/운영 환경 구성을 위한 설치 명세서라고 생각하면 됩니다.
🔗 관련글
[🚀 Dev/Python] - [Python] requirements.txt 명령어 정리
[🚀 Dev/Python] - [Python] requirements.txt 생성 및 설치 방법
setup.py는 무엇인가요?
setup.py는 이 프로젝트를 "파이썬 패키지"로 만들기 위한 설정 파일입니다.
예를 들어 내가 만든 크롤러 프로젝트 my-scraper를 다른 프로젝트에서 import my_scraper로 쓰고 싶다면?
setup.py를 작성해서 패키지로 설치할 수 있어야 합니다.
from setuptools import setup, find_packages
setup(
name="my-scraper",
version="0.1",
packages=find_packages()
)
그리고 pip install -e .으로 현재 디렉토리를 패키지처럼 등록할 수 있습니다.
- find_packages()는 __init__.py가 있는 디렉토리를 자동으로 찾아줍니다.
- 이름, 버전, 의존성 등을 설정하면 PyPI에 배포할 수도 있어요.
한눈에 보는 차이
| 항목 | requirements.txt | setup.py |
| 목적 | 패키지 설치 명세 | 패키지 배포/설치 설정 |
| 주 사용처 | 개발 환경 구축 | 라이브러리 패키징 |
| 설치 명령 | pip install -r | pip install . 또는 python setup.py install |
| 작성 주체 | 주로 사용자 | 주로 라이브러리 개발자 |
| 예시 | requests==2.31.0 | name='my-lib', version='0.1' |
결론
- requirements.txt: 내가 이 프로젝트를 실행하려고 설치해야 할 것들 정리
- setup.py: 내가 만든 프로젝트를 패키지로 만들어서 다른 데서도 쓸 수 있게 설정
개발자라면 두 파일 모두 자주 만나게 되니,
이번 기회에 역할 차이를 확실히 이해해두면 좋습니다!
'Dev > Python' 카테고리의 다른 글
| [FastAPI] 성공/실패/예외 응답을 하나의 구조로 설계하는 이유와 방법 (3) | 2025.04.19 |
|---|---|
| [FastAPI] 예외 응답도 CommonResponse로 처리하는 이유 (0) | 2025.04.18 |
| [Python] print만 쓰다가 logging으로 바꾼 이유 (파이썬 로깅 입문기) (2) | 2025.04.14 |
| [Python] db.flush()는 언제, 왜 사용하는가? (0) | 2025.04.12 |
| [Python] db.flush() Service/CRUD 계층 분리 구조에서의 실전 예제 (0) | 2025.04.11 |