Как работает путь поиска модуля в Python

В этом уроке вы узнаете, как работает путь поиска модулей в Python при импорте модуля в программу.

Что такое путь поиска модулей в Python?

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

import module

Python выполнит поиск файла module.py в следующих источниках:

  • Текущая папка, из которой запускается программа.
  • Список папок, указанных в переменной среды PYTHONPATH, если вы ее задали ранее.
  • Зависящий от установки список папок, который вы настроили при установке Python.

Python сохраняет полученный путь поиска в переменной sys.path, которая поступает из модуля sys.

Следующая программа показывает текущий путь поиска модулей:

import sys

for path in sys.path:
    print(path)

Вот пример вывода в Windows:

D:\Python\
C:\Program Files\Python38\python38.zip
C:\Program Files\Python38\DLLs
C:\Program Files\Python38\lib
C:\Program Files\Python38
C:\Users\PythonTutorial\AppData\Roaming\Python\Python38\site-packages
C:\Program Files\Python38\lib\site-packages 

Ниже приведен пример вывода на Linux:

/Library/Frameworks/Python.framework/Versions/3.8/bin
/Library/Frameworks/Python.framework/Versions/3.8/lib/python38.zip 
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/lib-dynload
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.8/site-packages

Чтобы быть уверенным, что Python всегда сможет найти module.py, вам необходимо:

  • Поместите module.py в папку, где будет выполняться программа.
  • Включите папку, содержащую module.py, в переменную среды PYTHONPATH. Или вы можете поместить module.py в одну из папок, включенных в переменную PYTHONPATH.
  • Поместите module.py в одну из папок, зависящих от установки.

Изменение пути поиска модулей Python во время выполнения

Python позволяет изменять путь поиска модулей во время выполнения, изменяя переменную sys.path. Это позволяет хранить файлы модулей в любой папке по вашему выбору. Поскольку sys.path представляет собой список, к нему можно добавить путь поиска.

В следующем примере добавляется d:\modules к пути поиска и используется модуль набора, хранящийся в этой папке:

>>> import sys
>>> sys.path.append('d:\\modules\\')
>>> import recruitment
>>> recruitment.hire()
Hire a new employee...
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *