Published on

14단계: CLI 앱 제작과 PyPI 배포

14-1. argparse로 CLI 프로그램 만들기

import argparse

parser = argparse.ArgumentParser(description="간단한 계산기")
parser.add_argument("x", type=int)
parser.add_argument("y", type=int)
args = parser.parse_args()

print(args.x + args.y)

실행 예:

python calc.py 3 5
# 출력: 8

14-2. 명령어 옵션 추가

parser.add_argument("-v", "--verbose", action="store_true")
if args.verbose:
    print(f"{args.x} + {args.y} = {args.x + args.y}")

14-3. setup.py 구성

from setuptools import setup

setup(
    name="cli-calc",
    version="0.1.0",
    py_modules=["calc"],
    entry_points={
        "console_scripts": [
            "calc=calc:main"
        ]
    }
)

calc.py 안에 main() 함수가 있어야 함.


14-4. pyproject.toml 구성

[project]
name = "cli-calc"
version = "0.1.0"

[project.scripts]
calc = "calc:main"

14-5. 빌드와 배포 준비

pip install build twine
python -m build

14-6. PyPI 업로드

twine upload dist/*

14-7. CLI 앱 설치 및 실행

pip install cli-calc
calc 1 2

요약

  • argparse로 CLI 앱 인터페이스 작성 가능
  • setup.py 또는 pyproject.toml로 패키징 설정
  • build → upload 순서로 PyPI 업로드
  • entry_points 또는 [project.scripts]로 CLI 명령어 등록

심화학습

Q1. console_scripts를 사용하는 이유는 무엇인가요?
A1. CLI 명령어 실행 시 자동으로 해당 함수가 연결되도록 설정하여, 터미널에서 명령어처럼 사용할 수 있습니다.


Q2. setup.py 대신 pyproject.toml을 권장하는 이유는?
A2. PEP 518/621에 따라 표준화된 빌드 시스템 구성을 제공하고, 의존성과 메타데이터를 명확하게 분리할 수 있기 때문입니다.


Q3. PyPI 배포 전 테스트를 위해 사용할 수 있는 방법은?
A3. https://test.pypi.org 를 사용하여 사전 테스트가 가능하며, --repository-url로 업로드 주소를 지정할 수 있습니다.