Skapa ett paket

Att utveckla Python-paket

James Fulton

Climate informatics researcher

Varför bygga ett paket?

  • För att göra din kod lättare att återanvända
  • För att slippa kopiera och klistra in kod om och om igen
  • För att hålla dina funktioner uppdaterade
  • För att dela din kod med andra
Att utveckla Python-paket

Kursinnehåll

Du bygger ett komplett paket och går igenom:

  • Fillayout
  • Importstruktur
  • Göra paketet installerbart
  • Lägga till licenser och README:er
  • Stilkontroll och enhetstester för hög kvalitet
  • Registrera och publicera paketet på PyPI
  • Använda paketmallar
Att utveckla Python-paket

Skript, moduler och paket

  • Skript – En Python-fil som körs med python myscript.py

  • Paket – En katalog med Python-kod som importeras

    • t.ex. numpy
  • Underpaket – Ett mindre paket inuti ett paket

    • t.ex. numpy.random och numpy.linalg
  • Modul – En Python-fil inuti ett paket som innehåller paketets kod.

    • t.ex. exempel visas på nästa 2 slides
  • Bibliotek – Antingen ett paket eller en samling paket

    • t.ex. Pythons standardbibliotek (math, os, datetime,...)
Att utveckla Python-paket

Katalogträd för ett paket

Katalogträd för ett enkelt paket

mysimplepackage/
|-- simplemodule.py
|-- __init__.py
  • Den här katalogen, mysimplepackage, är ett Python-paket
  • simplemodule.py innehåller all paketkod
  • __init__.py markerar katalogen som ett Python-paket
Att utveckla Python-paket

Innehållet i ett enkelt paket

__init__.py

Tom fil

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

...

def another_cool_function():
    ...
    return another_cool_result

Fil med generaliserade funktioner och kod.

Att utveckla Python-paket

Underpaket

Katalogträd för paket med underpaket

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Att utveckla Python-paket

Nu kör vi en övning!

Att utveckla Python-paket

Preparing Video For Download...