Путь поиска модулей

put poiska modulej Системные инструменты

Модуль sys позволяет также проверить путь поиска модулей как в интерактивном режиме, так и из программы на языке Python. Переменная sys.path хранит список строк, представляющих действительный путь поиска в выполняющемся интерпретаторе Python. Когда выполняется операция импортирования модуля, Python просматривает этот путь слева направо, пытаясь отыскать файл модуля в каждом каталоге, указанном в списке. Поэтому данная переменная позволит вам убедиться, что путь поиска действительно задан так, как нужно.[6]

Список sys.path просто инициализируется при первом запуске интерпретатора из PYTHONPATH с добавлением системных значений по умолчанию и содержимого файлов .pth, находящихся в каталогах со сценариями. В действительности, если заглянуть в список sys.path в интерактивной оболочке, можно обнаружить довольно много каталогов, которые отсутствуют в переменной PYTHONPATH: в него входит также указатель на домашний каталог сценария (пустая строка — назначение которой я объясню далее, после знакомства с функцией os.getcwd) и набор каталогов стандартных библиотек, который может быть различным в каждой установке:

>>> sys.path

[‘’, C:\\PP4thEd\\Examples’, …плюс каталоги стандартной библиотеки… ]

Как это ни удивительно, но список sys.path можно изменять программным способом. Сценарии могут использовать такие операции над списками, как append, extend, insert, pop и remove, а также использовать инструкцию del, чтобы изменять путь поиска модулей в процессе выполнения, чтобы подключить все каталоги с необходимыми модулями. Python всегда использует для импорта текущее значение sys.path, учитывая все внесенные вами изменения:

>>> sys.path.append(r’C:\mydir’)

>>> sys.path

[‘’, ‘C:\\PP4thEd\\Examples’, more deleted…, ‘C:\\mydir’]

Такое непосредственное изменение переменной sys.path является альтернативой установке переменной оболочки PYTHONPATH, хотя и не самой лучшей. Изменения в sys.path сохраняются лишь до завершения процесса Python, и их нужно повторно вносить при каждом новом запуске программы или сеанса Python. Однако некоторые типы программ (например, сценарии, выполняющиеся на веб-сервере) не должны зависеть от значения PYTHONPATH. Такие сценарии могут сами настраивать список sys.path при запуске и включать в него все необходимые каталоги с импортируемыми модулями. Более конкретный пример использования sys.path приводится в примере 1.34, в предыдущей главе, где мы вынуждены были предусмотреть динамическую настройку пути поиска, так как применение веб-сервера не позволяет делать какие-либо предположения о путях к импортируемым модулям.

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Оцените статью
Секреты программирования
Добавить комментарий