8 ноября 2013 г.

Создание путей поиска модуля, углубление

От теории к практике
так сказать углубляемся...

Пути поиска модулей, углубляемся
Из  всего  предыдущего поста следует,  что  переменная  окружения  PYTHONPATH 
и файлы .pth позволяют вам определять каталоги, где интерпретатор будет искать  файлы при  выполнении  операции  импортирования.  Способ  настройки переменных окружения и имена каталогов, где могут храниться файлы .pth, зависит от типа платформы. Например, в Windows можно воспользоваться ярлыком Система (System) в панели управления, чтобы записать в переменную PYTHONPATH список каталогов, разделенных точкой с запятой, как показано ниже:
c:\pycode\utilities;d:\pycode\package1

Или создать текстовый файл с именем C:\Python30\pydirs.pth, который выглядит примерно так:
c:\pycode\utilities
d:\pycode\package1
Аналогичным образом выполняются настройки и на других платформах.

Автоматическое изменение пути поиска
Это описание пути поиска модулей является верным, но достаточно общим – точная конфигурация  пути  поиска  зависит  от  типа  платформы  и  версии Python. В зависимости от используемой платформы в путь поиска модулей автоматически могут добавляться дополнительные каталоги.
Например, в путь поиска вслед за каталогами из переменной окружения PYTHONPATH и перед  каталогами  стандартной  библиотеки  интерпретатор  может добавлять текущий рабочий каталог – каталог, откуда была запущена программа. Когда программа запускается из командной строки, текущий рабочий каталог может не совпадать с домашним каталогом, где находится главный файл программы (то есть с каталогом, где находится программа). Так как от запуска к запуску программы текущий рабочий каталог может изменяться, при обычных условиях рабочий каталог не должен иметь значения для операций 
импорта.
Чтобы увидеть, как интерпретатор настраивает путь поиска модулей на вашей платформе, вы можете проверить содержимое переменной sys.path, обсуждение которой является темой следующего поста.

Список sys.path
Если вам потребуется узнать, как выглядит путь поиска на вашей машине, вы всегда сможете сделать это, просмотрев содержимое встроенного списка sys.path. Этот список строк с именами каталогов представляет собой путь поиска, используемый интерпретатором, – при выполнении операций импорта Python просматривает каждый каталог из списка, слева направо.
Действительно, sys.path – это путь поиска модулей. Интерпретатор создает его во время запуска программы, автоматически объединяя в список домашний каталог все каталоги, перечисленные в переменной окружения PYTHONPATH и в файлах .pth,  и  каталоги стандартной  библиотеки.  В  результате  получается  список строк с именами каталогов, которые просматриваются интерпретатором при импортировании новых файлов.
Представление языком Python этого списка имеет два основных полезных результата. 
Во-первых, он обеспечивает возможность проверить настройки пути поиска, которые вы выполнили, – если вы не видите свои настройки в этом списке каталогов, вам следует проверить, насколько правильно вы все проделали. Например, ниже показано, как выглядит путь поиска модулей у меня, в операционной системе Windows в Python 3.0, с моими     настройками переменной окружения PYTHONPATH, куда записан каталог C:\users, и с моим файлом C:\Python30\mypath.pth, содержащим путь к каталогу C:\users\mark. Пустая строка в начале списка соответствует текущему рабочему каталогу, а мои настройки объединены с системными (остальные пути в списке – это каталоги 
стандартной библиотеки):
>>> import sys
>>> sys.path
[‘’, ‘C:\\users’, ‘C:\\Windows\\system32\\python30.zip’, ‘c:\\Python30\\DLLs’,
‘c:\\Python30\\lib’, ‘c:\\Python30\\lib\\plat-win’, ‘c:\\Python30’,
‘C:\\Users\\Mark’, ‘c:\\Python30\\lib\\site-packages’]
Во-вторых, если вы понимаете, как формируется список, вы можете обеспечить сценариям возможность самостоятельно задавать свои пути поиска. Как будет показано далее в этой части книги, изменяя список sys.path, вы можете изменить путь поиска для всех последующих операций импорта. Однако эти изменения продолжают действовать, только пока выполняется сценарий переменная окружения PYTHONPATH и файлы .pth обеспечивают возможность более долговременного хранения измененного пути.

Разобравшись с настройкой путей для модулей, в следующем посте будет показано импортирование файлов модулей

Комментариев нет:

Отправить комментарий