Когда импортируется модуль spam, интерпретатор сначала ищет встроенный модуль с этим именем. Если он не найден, он ищет файл с именем spam.py в списке каталогов, заданных переменной sys.path. sys.path инициализируется из следующих мест:
Каталог, содержащий входной скрипт (или текущий каталог, когда не указан файл).
PYTHONPATH (список имен каталогов с тем же синтаксисом, что и переменная оболочки PATH).
Значение по умолчанию, зависящее от установки.
Примечание. В файловых системах, которые поддерживают символические ссылки, каталог, содержащий входной скрипт, вычисляется после использования символьной ссылки. Другими словами, каталог, содержащий символическую ссылку, не добавляется в путь поиска модуля.
После инициализации программы Python могут изменять sys.path. Каталог, содержащий выполняемый скрипт, помещается в начало пути поиска, опережая стандартный путь к библиотеке. Это означает, что скрипты в этом каталоге будут загружены вместо модулей с тем же именем в каталоге библиотеки. Это ошибка, если не требуется замена. Дополнительную информацию см. В разделе "Стандартные модули".
Информацию о "стандартном по умолчанию" см. В документации на модуле site.
Ответ 2
Кроме того, вы можете видеть, что текущий путь с помощью модуля sys
import sys
print(sys.path)
Ответ 3
Он использует PYTHONPATH, заданный как переменную среды, для поиска пакетов (папок с файлами __init__.py) и модулей (или, если он уже загружен один раз, извлекает объект модуля из sys.modules).
Ответ 4
У Python есть переменная пути, точно такая же, как у вашего терминала. Python ищет модули в папках внутри этого пути или в папке, в которой находится ваша программа.