Python Academy · Lektion

Paket och __init__.py

Organisera moduler i paket med en korrekt katalogstruktur.

Lektion 3 av 413 steg

Paket och __init__.py är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad är ett paket?

Ett paket är en katalog som innehåller en __init__.py-fil och en eller flera moduler. Python behandlar alla sådana kataloger som paket som ni kan importera från.

mypackage/
    __init__.py
    utils.py
    math_helpers.py

Filen __init__.py

__init__.py körs när paketet importeras. Den kan vara tom eller exponera utvalda namn för anropande kod.

# mypackage/__init__.py
from .utils import helper
from .math_helpers import add

Importera från ett paket

Använd punktnotation för att importera undermoduler eller namn som definierats i __init__.py.

import mypackage
from mypackage import helper
from mypackage.math_helpers import add
print(add(2, 3))

Underpaket

Paket kan kapslas: en underkatalog med en egen __init__.py blir ett underpaket.

mypackage/
    __init__.py
    network/
        __init__.py
        http.py

Relativa importer

Inuti ett paket använder ni relativa importer med en inledande punkt för att referera till syskonmoduler utan att hårdkoda paketnamnet.

# mypackage/network/http.py
from ..utils import helper   # two levels up

Absoluta och relativa importer

Absoluta importer är entydiga och bör föredras. Relativa importer är användbara i stora paket för att undvika långa namn.

# Absolute
from mypackage.utils import helper

# Relative (inside mypackage)
from .utils import helper

__all__ i __init__.py

Definiera __all__ för att styra vad from package import * exporterar.

# mypackage/__init__.py
__all__ = ['helper', 'add']
from .utils import helper
from .math_helpers import add

Namnrymdspaket (PEP 420)

Python 3.3+ har stöd för namnrymdspaket – kataloger utan __init__.py. Det är användbart när ett paket ska delas upp över flera kataloger.

# No __init__.py needed
# Just have the directory and import normally
import myns.module

Initiering av paketets __init__

Använd __init__.py för att ange konstanter på paketnivå, konfigurera loggning eller läsa in tunga undermoduler vid behov.

# mypackage/__init__.py
import logging
logging.getLogger(__name__).addHandler(logging.NullHandler())
VERSION = '1.0.0'

Distribuera paket

Lägg till en pyproject.toml eller setup.py så att paketet kan installeras med pip.

# pyproject.toml excerpt
[project]
name = "mypackage"
version = "1.0.0"

# Install locally
# pip install -e .

Inspektera paketattribut

Använd __file__, __path__ och __name__ för att undersöka paketmetadata under körning.

import mypackage
print(mypackage.__file__)   # path to __init__.py
print(mypackage.__path__)   # list of directory paths
print(mypackage.__name__)   # 'mypackage'

Snabbtest

Vilken fil gör en katalog till ett Python-paket?

Sammanfattning

Paket organiserar moduler i kataloger med hjälp av __init__.py. Använd absoluta importer för tydlighet, relativa importer inom ett paket och __all__ för att styra publika API:er.

Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”Paket och __init__.py” gratis?

Ja – hela texten till ”Paket och __init__.py” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Paket och __init__.py”?

Organisera moduler i paket med en korrekt katalogstruktur. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Paket och __init__.py”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Skapa och importera moduler
  2. Pythons standardbibliotek
  3. Paket och __init__.py
  4. Installera paket med pip
← Tillbaka till Python Academy