Шаг 129.
Основы языка Python.
Модули и пакеты. Пути поиска модулей

    На этом шаге мы рассмотрим особенности поиска модулей.

    До сих пор мы размещали модули в одной папке с файлом основной программы. В этом случае нет необходимости настраивать пути поиска модулей, т. к. папка с исполняемым файлом автоматически добавляется в начало списка путей. Получить полный список путей поиска позволяет следующий код:

>>> import  sys #  Подключаем модуль  sys
>>> sys.path # path содержит список путей поиска модулей

    Список sys.path содержит пути поиска, получаемые из следующих источников:

    При поиске модуля список sys.path просматривается слева направо. Поиск прекращается после первого найденного модуля. Таким образом, если в каталогах C:\folder1 и C:\folder2 существуют одноименные модули, то будет использоваться модуль из папки C:\folder1, т. к. он расположен первым в списке путей поиска.

    Список sys.path можно изменять из программы с помощью списковых методов. Например, добавить каталог в конец списка можно с помощью метода append(), а в его начало — с помощью метода inser ():

# Изменение списка путей поиска модулей
# -*-  coding: utf-8 -*-
import sys
sys.path.append(r"C:\folder1") # Добавляем в  конец списка
sys.path.insert(0,r"C:\folder2") # Добавляем в  начало списка
print(sys.path)
input ()

    Результат работы приложения:

['C:\\folder2', 'C:\\Python34\\Lib\\idlelib', 'C:\\Python34\\python34.zip', 
'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 
'C:\\Python34\\lib\\site-packages', 'C:\\folder1']
Архив с файлом можно взять здесь.

    В этом примере мы добавили папку C:\folder2 в начало списка. Теперь, если в каталогах C:\folder1 и C:\folder2 существуют одноименные модули, будет использоваться модуль из папки C:\folder2, а не из папки C:\folder1, как в предыдущем примере.

    Обратите внимание на символ r перед открывающей кавычкой. В этом режиме специальные последовательности символов не интерпретируются. Если используются обычные строки, то в указании пути необходимо удвоить (экранировать) каждый встреченный слеш:

sys.path.append("С:\\folder1\\folder2\\folder3")

    На следующем шаге мы рассмотрим повторную загрузку модулей.




Предыдущий шаг Содержание Следующий шаг