Makefiles und Classifiers

Python-Pakete entwickeln

James Fulton

Climate informatics researcher

Classifiers

  • Metadaten für dein Paket
  • Hilft Nutzer:innen, dein Paket auf PyPI zu finden
  • Du solltest angeben
    • Paketstatus
    • Zielgruppe
    • Lizenztyp
    • Sprache
    • Unterstützte Python-Versionen
  • Es gibt viele weitere Classifiers https://pypi.org/classifiers

In setup.py von mysklearn

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-Pakete entwickeln

Wofür sind Makefiles?

  • Automatisieren Teile des Paket-Builds
mysklearn/
...
|-- README.md
|-- setup.py
|-- Makefile  <---
...
Python-Pakete entwickeln

Was steht in einem Makefile?

In Makefile

...

dist: ## erstellt Source- und Wheel-Paket
    python3 setup.py sdist bdist_wheel

clean-build: ## Build-Artefakte entfernen rm -fr build/ rm -fr dist/ rm -fr .eggs/
test: ## Tests schnell mit dem Standard-Python ausführen pytest
release: dist ## Paket bauen und Release hochladen twine upload dist/*
Python-Pakete entwickeln

Wie nutze ich das Makefile?

make <funktionsname>
mysklearn/ <--- hierhin navigieren
...
|-- README.md
|-- setup.py
|-- Makefile  
...
Python-Pakete entwickeln

Wie nutze ich das Makefile?

Um die dist-Funktion zu nutzen, tippe im Terminal

make dist

In Makefile

...

dist: ## erstellt Source- und Wheel-Paket
    python3 setup.py sdist bdist_wheel

clean-build: ## Build-Artefakte entfernen
    rm -fr build/
    rm -fr dist/
    rm -fr .eggs/

test: ## Tests schnell mit dem Standard-Python ausführen
    pytest

release: dist ## Paket bauen und Release hochladen
    twine upload dist/*
Python-Pakete entwickeln

Makefile: Zusammenfassung

make help
clean                alle Build-, Test-, Coverage- und Python-Artefakte entfernen
clean-build          Build-Artefakte entfernen
clean-pyc            Python-Datei-Artefakte entfernen
clean-test           Test- und Coverage-Artefakte entfernen
lint                 Stil mit flake8 prüfen
test                 Tests schnell mit dem Standard-Python ausführen
test-all             Tests auf allen Python-Versionen mit tox ausführen
release              Paket bauen und ein Release hochladen
dist                 Source- und Wheel-Paket erstellen
install              Paket in die site-packages des aktiven Python installieren
Python-Pakete entwickeln

Lass uns üben!

Python-Pakete entwickeln

Preparing Video For Download...