Как работает путь поиска модуля в 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...