0Pricing
Python Academy · Lekcja

Pakiety i __init__.py

Proszę organizować moduły w pakiety z zachowaniem właściwej struktury katalogów.

Pakiety i __init__.py to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Czym jest pakiet?

Pakiet to katalog zawierający plik __init__.py oraz co najmniej jeden moduł. Python traktuje każdy taki katalog jako pakiet, z którego można importować elementy.

mypackage/
    __init__.py
    utils.py
    math_helpers.py

Plik __init__.py

Plik __init__.py jest wykonywany podczas importowania pakietu. Może być pusty lub udostępniać wybrane nazwy wywołującym.

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

Importowanie z pakietu

Należy używać notacji kropkowej do importowania podmodułów lub nazw zdefiniowanych w __init__.py.

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

Podpakiety

Pakiety mogą być zagnieżdżone: podkatalog z własnym plikiem __init__.py staje się podpakietem.

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

Importy względne

Wewnątrz pakietu należy używać importów względnych z kropką na początku, aby odwoływać się do modułów siostrzanych bez wpisywania nazwy pakietu na stałe.

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

Importy bezwzględne a względne

Importy bezwzględne są jednoznaczne i zalecane. Importy względne są przydatne wewnątrz dużych pakietów, aby unikać długich nazw.

# Absolute
from mypackage.utils import helper

# Relative (inside mypackage)
from .utils import helper

__all__ w __init__.py

Należy zdefiniować __all__, aby określić, co konstrukcja from package import * eksportuje.

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

Pakiety przestrzeni nazw (PEP 420)

Python 3.3+ obsługuje pakiety przestrzeni nazw — katalogi bez pliku __init__.py. Jest to przydatne, gdy pakiet ma być podzielony między wiele katalogów.

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

Inicjalizacja pakietu w __init__

Pliku __init__.py można użyć do ustawiania stałych na poziomie pakietu, konfigurowania logowania lub leniwego ładowania dużych podmodułów.

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

Dystrybucja pakietów

Należy dodać plik pyproject.toml lub setup.py, aby umożliwić instalowanie pakietu za pomocą pip.

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

# Install locally
# pip install -e .

Sprawdzanie atrybutów pakietu

Elementów __file__, __path__ i __name__ można używać do introspekcji metadanych pakietu w czasie działania programu.

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

Szybkie sprawdzenie

Jaki plik sprawia, że katalog staje się pakietem Pythona?

Podsumowanie

Pakiety organizują moduły w katalogach za pomocą __init__.py. Dla przejrzystości należy używać importów bezwzględnych, wewnątrz pakietu — względnych, a __all__ służy do określania publicznych interfejsów API.

Często zadawane pytania

Czy lekcja „Pakiety i __init__.py” jest bezpłatna?

Tak — pełny tekst „Pakiety i __init__.py” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Pakiety i __init__.py”?

Proszę organizować moduły w pakiety z zachowaniem właściwej struktury katalogów. Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Pakiety i __init__.py”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Tworzenie i importowanie modułów
  2. Biblioteka standardowa Pythona
  3. Pakiety i __init__.py
  4. Instalowanie pakietów za pomocą pip
← Powrót do Python Academy