Python Academy · Lektion

Pakker og __init__.py

Organisér moduler i pakker med en passende mappestruktur.

Lektion 3 af 413 trin

Pakker og __init__.py er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.

Hvad er en pakke

En pakke er en mappe, der indeholder en __init__.py-fil og et eller flere moduler. Python behandler enhver sådan mappe som en pakke, du kan importere fra.

mypackage/
    __init__.py
    utils.py
    math_helpers.py

Filen __init__.py

__init__.py køres, når pakken importeres. Den kan være tom eller eksponere udvalgte navne for kaldende kode.

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

Import fra en pakke

Brug punktnotation til at importere undermoduler eller navne, der er defineret i __init__.py.

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

Underpakker

Pakker kan indlejres: En undermappe med sin egen __init__.py bliver en underpakke.

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

Relative importer

Brug relative importer med et indledende punkt inde i en pakke for at referere til sidestillede moduler uden at hardkode pakkenavnet.

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

Absolutte kontra relative importer

Absolutte importer er entydige og foretrækkes. Relative importer er nyttige i store pakker, fordi de undgår lange navne.

# Absolute
from mypackage.utils import helper

# Relative (inside mypackage)
from .utils import helper

__all__ i __init__.py

Definér __all__ for at styre, hvad from package import * eksporterer.

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

Navnerumspakker (PEP 420)

Python 3.3+ understøtter navnerumspakker — mapper uden __init__.py. Det er nyttigt, når en pakke skal opdeles på flere mapper.

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

Initialisering af pakker med __init__

Brug __init__.py til at angive konstanter på pakkeniveau, konfigurere logning eller indlæse tunge undermoduler efter behov.

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

Distribution af pakker

Tilføj pyproject.toml eller setup.py for at gøre pakken installerbar med pip.

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

# Install locally
# pip install -e .

Undersøgelse af pakkeattributter

Brug __file__, __path__ og __name__ til at undersøge pakkens metadata under kørsel.

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

Hurtigt tjek

Hvilken fil gør en mappe til en Python-pakke?

Opsummering

Pakker organiserer moduler i mapper ved hjælp af __init__.py. Brug absolutte importer for tydelighed, relative importer inde i en pakke og __all__ til at styre offentlige API'er.

Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
76
Lektioner
320

Ofte stillede spørgsmål

Er lektionen “Pakker og __init__.py” gratis?

Ja — hele teksten til “Pakker og __init__.py” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Pakker og __init__.py”?

Organisér moduler i pakker med en passende mappestruktur. Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Python Academy?

Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Pakker og __init__.py”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Python Academy-lektion?

Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Oprettelse og import af moduler
  2. Pythons standardbibliotek
  3. Pakker og __init__.py
  4. Installation af pakker med pip
← Tilbage til Python Academy