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.pyPlik __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 addImportowanie 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.pyImporty 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 upImporty 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 addPakiety 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.moduleInicjalizacja 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
- Tworzenie i importowanie modułów
- Biblioteka standardowa Pythona
- Pakiety i __init__.py
- Instalowanie pakietów za pomocą pip