0Pricing
Python Academy · Урок

Пакеты и __init__.py

Организуйте модули в пакеты с правильной структурой каталогов.

«Пакеты и __init__.py» — бесплатный урок Python Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Что такое пакет?

Пакет — это каталог, содержащий файл __init__.py и один или несколько модулей. Python считает любой такой каталог пакетом, из которого можно выполнять импорт.

mypackage/
    __init__.py
    utils.py
    math_helpers.py

Файл __init__.py

Файл __init__.py выполняется при импорте пакета. Он может быть пустым или предоставлять вызывающему коду выбранные имена.

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

Импорт из пакета

Используйте точечную запись, чтобы импортировать подмодули или имена, определённые в __init__.py.

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

Вложенные пакеты

Пакеты могут быть вложенными: подкаталог с собственным __init__.py становится вложенным пакетом.

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

Относительный импорт

Внутри пакета используйте относительный импорт с точкой в начале, чтобы обращаться к соседним модулям без жёсткого указания имени пакета.

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

Абсолютный и относительный импорт

Абсолютный импорт однозначен и предпочтителен. Относительный импорт полезен внутри больших пакетов, чтобы избегать длинных имён.

# Absolute
from mypackage.utils import helper

# Relative (inside mypackage)
from .utils import helper

__all__ в __init__.py

Определите __all__, чтобы управлять тем, что экспортирует from package import *.

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

Пакеты пространств имён (PEP 420)

Python 3.3+ поддерживает пакеты пространств имён — каталоги без __init__.py. Это удобно, когда пакет нужно разделить между несколькими каталогами.

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

Инициализация пакета в __init__

Используйте __init__.py, чтобы задать константы уровня пакета, настроить ведение журнала или отложенно загружать тяжёлые подмодули.

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

Распространение пакетов

Добавьте pyproject.toml или setup.py, чтобы сделать пакет устанавливаемым с помощью pip.

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

# Install locally
# pip install -e .

Проверка атрибутов пакета

Используйте __file__, __path__ и __name__, чтобы во время выполнения исследовать метаданные пакета.

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

Быстрая проверка

Какой файл превращает каталог в пакет Python?

Повторение

Пакеты организуют модули по каталогам с помощью __init__.py. Используйте абсолютный импорт для ясности, относительный импорт внутри пакета, а __all__ — для управления общедоступными API.

Часто задаваемые вопросы

Урок «Пакеты и __init__.py» бесплатный?

Да — полный текст урока «Пакеты и __init__.py» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Пакеты и __init__.py»?

Организуйте модули в пакеты с правильной структурой каталогов. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Пакеты и __init__.py»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Создание и импорт модулей
  2. Стандартная библиотека Python
  3. Пакеты и __init__.py
  4. Установка пакетов с помощью pip
← Назад к Python Academy