Makefile과 분류자

Python 패키지 개발하기

James Fulton

Climate informatics researcher

분류자(Classifier)

  • 패키지의 메타데이터
  • 사용자가 PyPI에서 패키지를 찾는 데 도움
  • 포함해야 할 항목
    • 패키지 상태
    • 대상 사용자
    • 라이선스 유형
    • 자연어
    • 지원 Python 버전
  • 더 많은 분류자: https://pypi.org/classifiers

mysklearn의 setup.py 내부

setup(
    ...
    classifiers=[
        'Development Status :: 2 - Pre-Alpha',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Natural Language :: English',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.6',
        'Programming Language :: Python :: 3.7',
        'Programming Language :: Python :: 3.8',
    ],
    ...
)
Python 패키지 개발하기

Makefile은 무엇을 하나요?

  • 패키지 빌드 작업 일부를 자동화
mysklearn/
...
|-- README.md
|-- setup.py
|-- Makefile  <---
...
Python 패키지 개발하기

Makefile에는 무엇이 있나요?

Makefile 내부

...

dist: ## 소스와 휠 패키지 빌드
    python3 setup.py sdist bdist_wheel

clean-build: ## 빌드 산출물 제거 rm -fr build/ rm -fr dist/ rm -fr .eggs/
test: ## 기본 Python으로 빠르게 테스트 실행 pytest
release: dist ## 패키징 후 릴리스 업로드 twine upload dist/*
Python 패키지 개발하기

Makefile은 어떻게 사용하나요?

make <function-name>
mysklearn/ <--- 여기로 이동
...
|-- README.md
|-- setup.py
|-- Makefile  
...
Python 패키지 개발하기

Makefile은 어떻게 사용하나요?

dist 기능을 쓰려면 터미널에 입력하십시오

make dist

Makefile 내부

...

dist: ## 소스와 휠 패키지 빌드
    python3 setup.py sdist bdist_wheel

clean-build: ## 빌드 산출물 제거
    rm -fr build/
    rm -fr dist/
    rm -fr .eggs/

test: ## 기본 Python으로 빠르게 테스트 실행
    pytest

release: dist ## 패키징 후 릴리스 업로드
    twine upload dist/*
Python 패키지 개발하기

Makefile 요약

make help
clean                모든 빌드, 테스트, 커버리지, Python 산출물 제거
clean-build          빌드 산출물 제거
clean-pyc            Python 파일 산출물 제거
clean-test           테스트와 커버리지 산출물 제거
lint                 flake8로 스타일 검사
test                 기본 Python으로 빠르게 테스트 실행
test-all             tox로 모든 Python 버전에서 테스트
release              패키징 및 릴리스 업로드
dist                 소스와 휠 패키지 빌드
install              활성 Python의 site-packages에 설치
Python 패키지 개발하기

Ayo berlatih!

Python 패키지 개발하기

Preparing Video For Download...