나는 이렇게 학습한다/Language

Python _ setup.py 의 역할과 사용법

daco2020 2023. 8. 20. 23:26

setup.py는 파이썬 프로젝트 및 패키지의 빌드, 패키징 및 배포를 관리하는 스크립트 파일이다. 이 파일은 주로 setuptoolsdistutils 라이브러리를 사용하여 파이썬 패키지 정보와 설정을 정의한다.

 

setup.py의 주요 역할

  1. 패키지 정보 정의: 패키지의 이름, 버전, 저자, 라이선스 등의 메타데이터를 정의
  2. 의존성 관리: 패키지의 작동을 위해 필요한 다른 파이썬 패키지들을 명시
  3. 빌드 및 배포 명령 제공: python setup.py install, python setup.py sdist 등의 명령어로 패키지를 빌드하거나 설치
  4. 엔트리 포인트 지정: 특정 스크립트나 함수를 명령어로 실행할 수 있게 설정

 

setup.py 예시

from setuptools import setup, find_packages

setup(
    name="mypackage",
    version="0.1",
    packages=find_packages(),
    install_requires=[
        "requests",  # requests 패키지에 의존성이 있을 경우
    ],
    entry_points={
        "console_scripts": [
            "my-command=mypackage.mymodule:main_function",
        ],
    },
)

코드 설명

  • name: 패키지의 이름
  • version: 패키지의 버전
  • packages: 패키지 내의 모듈 및 서브패키지를 자동으로 찾아주는 find_packages() 함수를 사용할 수 있음
  • install_requires: 패키지 설치시 필요한 다른 파이썬 패키지의 리스트
  • entry_points: 특정 함수나 스크립트를 CLI 명령어로 사용할 수 있게 만드는 설정. 위의 예시에서는 my-command라는 명령어로 mypackage.mymodule 모듈의 main_function을 실행할 수 있음

 

 

대략적으로 알아봤으니 setup.py에 대해 간단한 패키지를 만들어 실습해보자.

1. 디렉토리 구조

먼저 다음과 같은 디렉토리 구조를 만들어보자.

my_package/
├── my_module.py
└── setup.py

2. 모듈 작성

my_module.py 파일에 다음과 같은 간단한 코드를 작성한다.

def say_hello():
    print("안녕! 반가워!")

3. setup.py 작성

setup.py 파일에는 다음 코드를 참고하여 패키지 설치에 필요한 정보를 작성한다.

from setuptools import setup

setup(
    name="my_package",
    version="0.1",
    py_modules=["my_module"],
    entry_points={
        "console_scripts": ["say-hello=my_module:say_hello"],
    },
)

이 코드는 my_package라는 이름의 패키지를 설명하고, say-hello라는 커맨드라인 명령어를 만든다. 이 명령어를 실행하면 my_modulesay_hello 함수가 호출된다.

4. 패키지 설치

my_package 디렉토리에서 다음 명령어를 실행해 패키지를 설치한다.

python setup.py install

5. 커맨드라인 명령어 실행

설치가 완료되면 터미널에서 say-hello 명령어를 실행할 수 있다. 이 명령어를 실행하면 안녕! 반가워!라는 메시지가 출력된다.

 

실습을 통해 확인했듯이 setup.py는 Python 패키지를 빌드하고 실행할 수 있도록 돕는다.