import package.module
(указывается полный путь от корня проекта).
from . import module
(импорт модуля в том же пакете).from .. import module
(импорт модуля из родительского пакета).from .module import some_function
(импорт конкретной функции из модуля в том же пакете).Импорт модуля в рамках пакета в Python можно осуществить несколькими способами, каждый из которых имеет свои особенности и область применения. Предположим, у нас есть следующая структура пакета:
my_package/ ├── __init__.py ├── module_a.py └── sub_package/ ├── __init__.py └── module_b.py
Вот несколько способов импорта module_b
в module_a
:
# my_package/module_a.py
from .sub_package import module_b
# или
from .sub_package.module_b import some_function # импорт конкретной функции
module_b.some_function()
.
означает текущий пакет, ..
означает родительский пакет и т.д.
# my_package/module_a.py
import my_package.sub_package.module_b
my_package.sub_package.module_b.some_function()
Этот способ менее гибкий, так как требует знания полного пути до модуля и более громоздкий.
# my_package/module_a.py (не рекомендуется и не работает в Python 3)
import sub_package.module_b # избегайте этого
Рекомендации:
from . import ...
) внутри пакета для улучшения читаемости и переносимости.__init__.py
:
Файлы __init__.py
служат для обозначения каталогов как пакетов Python. Они могут быть пустыми или содержать код инициализации для пакета, например, экспорт определенных символов из подмодулей для удобного доступа:
# my_package/__init__.py
from .module_a import some_function_from_a # экспортируем функцию из module_a
Тогда можно будет использовать:
import my_package
my_package.some_function_from_a()