И так продолжаю заполнение своего блога шпаргалки по Python. И на этот раз добьем тему о файлах - модулях, которые вы можете подключать к своему коду.
Что ж с наступившим вас 2014 годом и с продолжением темы)
Обычно операция импорта работает именно так – она отыскивает и загружает файлы, находящиеся на вашей машине. Однако вполне возможно переопределить большую часть того, что делает операция импорта, используя то, что называется программными ловушками
импорта. Эти ловушки могут использоваться, чтобы придать операции импорта дополнительные полезные возможности, такие как загрузка файлов из архивов, расшифровывание и так далее.
Фактически сам интерпретатор Python использует эти ловушки, чтобы обеспечить возможность извлечения импортируемых компонентов из ZIP-архивов, заархивированные файлы автоматически извлекаются во время импорта, когда в пути поиска выбирается файл с расширением .zip. Например, один из каталогов стандартной библиотеки в списке sys.path, представленном выше, на сегодняшний день является файлом .zip. За дополнительной информацией обращайтесь к описанию встроенной функции __import__ в руководстве по стандартной библиотеке Python – настраиваемому инструменту, которым в действительности пользуется инструкция import.
Что ж с наступившим вас 2014 годом и с продолжением темы)
Обычно операция импорта работает именно так – она отыскивает и загружает файлы, находящиеся на вашей машине. Однако вполне возможно переопределить большую часть того, что делает операция импорта, используя то, что называется программными ловушками
импорта. Эти ловушки могут использоваться, чтобы придать операции импорта дополнительные полезные возможности, такие как загрузка файлов из архивов, расшифровывание и так далее.
Фактически сам интерпретатор Python использует эти ловушки, чтобы обеспечить возможность извлечения импортируемых компонентов из ZIP-архивов, заархивированные файлы автоматически извлекаются во время импорта, когда в пути поиска выбирается файл с расширением .zip. Например, один из каталогов стандартной библиотеки в списке sys.path, представленном выше, на сегодняшний день является файлом .zip. За дополнительной информацией обращайтесь к описанию встроенной функции __import__ в руководстве по стандартной библиотеке Python – настраиваемому инструменту, которым в действительности пользуется инструкция import.
Кроме того, Python поддерживает понятие файлов с оптимизированным байт-кодом (.pyo), которые создаются и запускаются интерпретатором из командной строки с флагом –O, – однако они выполняются лишь немногим быстрее, чем обычные файлы .pyc (обычно на 5 процентов быстрее), поэтому они используются достаточно редко. Система Psyco (глава 2) обеспечивает куда более существенный прирост в скорости выполнения.
Настройка пути поиска модулей, описание которой приводится в последних двух, в первую очередь касается программного кода, который вы пишете самостоятельно. Сторонние расширения для Python обычно используют для автоматической установки самих себя такой инструмент, как distutils, входящий в состав стандартной библиотеки, поэтому для
использования такого программного кода не требуется выполнять настройку пути поиска модулей. Системы, использующие distutils, обычно поставляются со сценарием setup.py, который запускается для установки таких систем, – этот сценарий импортирует и использует модуль distutils, чтобы поместить систему в каталог, который уже является частью пути поиска модулей (обычно в подкаталог Lib\sitepackages в каталоге, куда был установлен Python). За дополнительной информацией о распространении и установке программ с помощью distutils обращайтесь к стандартному набору руководств по языку Python, потому что эта тема далеко выходит за рамки данной книги (например, этот инструмент дополнительно обеспечивает возможность компиляции расширений на языке C на машине, где производится установка). Кроме того, обратите внимание на развивающуюся систему eggs, распространяемую с открытыми исходными текстами, которая добавляет возможность проверки зависимостей для установленного программного кода на языке Python.
Комментариев нет:
Отправить комментарий