본문 바로가기

[Python] setup.py와 requirements.txt는 뭐가 다를까?

@Jeeqong 2025. 4. 15. 15:04
반응형

서론

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: 내가 만든 프로젝트를 패키지로 만들어서 다른 데서도 쓸 수 있게 설정

개발자라면 두 파일 모두 자주 만나게 되니,

이번 기회에 역할 차이를 확실히 이해해두면 좋습니다!

 

 

반응형
Jeeqong
@Jeeqong :: JQVAULT

Jeeqong's vault : 정보/기록을 쌓아두는 공간 웹개발 포스팅 일상 리뷰를 기록하는 공간입니다.

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차