Как Python ищет модули при импорте ?

Спросят с вероятностью 3%



Процесс поиска и загрузки модулей при импорте осуществляется следующим образом:



1️⃣Поиск в текущем каталоге: Сначала ищет модуль в текущем каталоге, из которого запускается скрипт.

2️⃣Поиск в каталоге стандартных библиотек: Если модуль не найден в текущем каталоге, Python проверяет каталоги, указанные в переменной окружения PYTHONPATH, если такая переменная установлена.

3️⃣Поиск в установленных пакетах: Если модуль не найден в PYTHONPATH, проверяет стандартные каталоги, где установлены модули и библиотеки Python (например, lib/site-packages на Windows или /usr/local/lib/pythonX.X/dist-packages на Unix-подобных системах).



Этот процесс поиска управляется списком путей, который хранится в переменной sys.path. Порядок элементов в sys.path определяет порядок поиска модулей.



Пример работы с sys.path:

import sys

print(sys.path)




Вывод покажет все пути, где Python будет искать модули. Мы можем вручную добавить путь к этому списку, если хотим, чтобы Python искал модули в дополнительном месте:

import sys

sys.path.append('/path/to/my/modules')




Пример импорта модуля:

# Файл my_module.py в текущем каталоге

def hello():

print("Hello, world!")



# Файл main.py в том же каталоге

import my_module

my_module.hello() # Выведет: Hello, world!




Если my_module.py не будет найден в текущем каталоге, Python начнет проверять другие пути в sys.path в указанном порядке, пока не найдет нужный модуль или не завершится с ошибкой ModuleNotFoundError.



👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент



🔐 База собесов | 🔐 База тестовых