Откуда импортируется модуль django?
Начал изучать django, и в туториалах по нему люди пишут такое:
from django.http import HttpResponse
Не могу понять откуда взялся модуль django, ведь в папке django-проекта файла "django.py" нет?
Ответы (3 шт):
django обычно лежит в /usr/lib/python3.8/site-packages/django или для виндовс в C:\Users\user\AppData\Local\Programs\Python38\Lib\site-packages\django или C:\Python38\Lib\site-packages\django
Посмотреть список папок, где могут быть установленны модули можно функцией в питон
import sys
for p in sys.path:
print(p)
При импорте модуля интерпретатор сначала ищёт встроенный модуль с таким именем. Если такого модуля нет, то идёт поиск файла в списке директорий, определённых в переменной sys.path. Если в директории нет django.py поиск пойдет по папке lib, где и будет найден. Более подробно можно ознакомиться с процессом в документации к import
Во время импорта модуля Python сначала ищет его в папке "около себя", т.е. в той же, где запускается скрипт, здесь Вы правы.
А вот если рядом модуля нет, происходит следующее: Python начинает искать модуль в специальном списке папок с модулями. Получить данный список можно так:
import sys
print(sys.path)
Он проходит по каждой папке в поисках нужного модуля.
При установке через pip, как уже отметили в комментарии, нужная папка автоматически добавляется в этот список. Также изначально, сразу после установки Python, в этом списке хранятся папки, содержащие стандартные модули, наподобие os, sys и time.