- 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/*
- https://pypi.org 계정 필요
- 최초 업로드는 이름 중복 확인 필수
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
로 업로드 주소를 지정할 수 있습니다.