Een package starten

Python-pakketten ontwikkelen

James Fulton

Climate informatics researcher

Waarom een package bouwen?

  • Om je code makkelijker her te gebruiken
  • Om veel kopiëren en plakken te voorkomen
  • Om je functies up-to-date te houden
  • Om je code te delen met anderen
Python-pakketten ontwikkelen

Cursusinhoud

Je bouwt een compleet package en behandelt:

  • Bestandsindeling
  • Import-structuur
  • Je package installeerbaar maken
  • Licenties en READMEs toevoegen
  • Stijl en unittests voor hoge kwaliteit
  • Je package registreren en publiceren op PyPI
  • Packagetemplates gebruiken
Python-pakketten ontwikkelen

Scripts, modules en packages

  • Script - Een Python-bestand dat je draait met python myscript.py

  • Package - Een map vol Python-code om te importeren

    • bijv. numpy
  • Subpackage - Een kleiner package binnen een package

    • bijv. numpy.random en numpy.linalg
  • Module - Een Python-bestand in een package met de code van het package.

    • bijv. voorbeeld komt in de volgende 2 slides
  • Library - Een package of een verzameling packages

    • bijv. de Python-standaardbibliotheek (math, os, datetime,...)
Python-pakketten ontwikkelen

Mapstructuur van een package

Mapstructuur voor simpel package

mysimplepackage/
|-- simplemodule.py
|-- __init__.py
  • Deze map, mysimplepackage, is een Python-package
  • simplemodule.py bevat alle packagecode
  • __init__.py markeert deze map als Python-package
Python-pakketten ontwikkelen

Inhoud van simpel package

__init__.py

Leeg bestand

simplemodule.py
def cool_function():
    ...
    return cool_result

...

def another_cool_function():
    ...
    return another_cool_result

Bestand met algemene functies en code.

Python-pakketten ontwikkelen

Subpackages

Mapstructuur voor package met subpackages

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Python-pakketten ontwikkelen

Laten we oefenen!

Python-pakketten ontwikkelen

Preparing Video For Download...