Подтвердить что ты не робот

Как python находит файл модуля, если оператор import содержит только имя файла?

Внутри я вижу код импорта кода Python с помощью import sys или import mymodule

Как интерпретатор находит правильный файл, если не указан каталог или путь?

4b9b3361

Ответ 1

http://docs.python.org/3/tutorial/modules.html#the-module-search-path

6.1.2. Путь поиска модуля

Когда импортируется модуль 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 ищет модули в папках внутри этого пути или в папке, в которой находится ваша программа.