Как python находит файл модуля, если инструкция import содержит только имя файла?
везде, где я вижу код Python, импортирующий модули с помощью import sys
или import mymodule
как интерпретатор находит правильный файл, если не указан каталог или путь?
4 ответов
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
. Каталог, содержащий запускаемый скрипт, помещается в начале пути поиска, перед стандартным путем библиотеки. Это означает, что скрипты в этом каталоге будут загружаться вместо одноименных модулей в каталоге библиотеки. Это ошибка, если замена не предназначена. Дополнительные сведения см. В разделе стандартные модули.
для сведения об "установке по умолчанию" см. В документации по the site
модуль.
использует PYTHONPATH, установить в качестве переменной среды, чтобы найти пакеты (папки, содержащие __init__.py
файлы) и модули (или, если они уже загружены один раз, извлекает объект модуля из sys.modules
).
Python имеет переменную пути, такую же, как у вас внутри вашего терминала. Питон ищет модули в папках внутри этого пути, или в папке, где программа находится.