from my_project.module_a.module_b import my_function
.
(текущий каталог) и ..
(родительский каталог).from . import module_c
или from ..module_a import another_function
from ....
) для поддержания читаемости.В больших Python проектах правильное использование абсолютных и относительных импортов критически важно для организации кода, упрощения поддержки и предотвращения конфликтов имен. Выбор между ними зависит от конкретной ситуации и структуры проекта, но обычно рекомендуется придерживаться определенных правил.
Абсолютные импорты:
sys.path
. Например, import my_project.module1.submodule2
.import requests
).# my_project/module1.py
import my_project.module2
import external_library.some_module # Импорт из сторонней библиотеки
Относительные импорты:
# my_project/module1/submodule1.py
from . import submodule2 # Импорт из того же пакета
from .. import module2 # Импорт из родительского пакета
from ..module2 import some_function # Импорт функции из родительского пакета
Рекомендации по использованию в больших проектах:
Пример структуры проекта и импортов:
my_project/
__init__.py
module1.py
module2.py
package1/
__init__.py
module3.py
module4.py
subpackage1/
__init__.py
module5.py
# module1.py
import my_project.package1.module3 # Абсолютный импорт
# package1/module3.py
from . import module4 # Относительный импорт (из того же пакета)
from .. import module1 # Относительный импорт (из родительского пакета)
# package1/subpackage1/module5.py
from .. import module3 # Относительный импорт (из родительского пакета)
from my_project.module2 import some_function #Абсолютный импорт (из другого пакета)