3 ответов:
"точка входа" обычно является функцией (или другим вызываемым функциональным объектом), которую разработчик или пользователь вашего пакета Python может захотеть использовать, хотя не вызываемый объект может быть предоставлен в качестве точки входа (как правильно указано в комментариях!).
наиболее популярным видом точки входа является точка входа "console_script", которая указывает на функцию, которую вы хотите сделать доступной в качестве инструмента командной строки для тех, кто устанавливает ваш пакет. Это входит в ваш setup.py например:
entry_points={ 'console_scripts': [ 'cursive = cursive.tools.cmd:cursive_command', ], },у меня есть пакет, который я только что развернул под названием "cursive.инструменты", и я хотел, чтобы он сделал доступной команду "курсив", которую кто-то может запустить из командной строки, например:
$ cursive --help usage: cursive ...способ сделать это-определить функцию, например, функцию "cursive_command" в cursive/tools/cmd.py это выглядит так:
def cursive_command(): args = sys.argv[1:] if len(args) < 1: print "usage: ..."и так далее; он должен предполагать, что он был вызван из командной строки, разбирать аргументы, которые пользователь обеспечил, причем ... ну, делай то, для чего предназначена команда.
установить docutils пакет для отличного примера использования точки входа: он установит что-то вроде полдюжины полезных команд для преобразования документации Python в другие форматы.
точек входа обеспечить постоянную регистрацию имени объекта на основе файловой системы и механизм прямого импорта объекта на основе имени (реализованный setuptools пакет).
они связывают имена объектов Python с идентификаторами свободной формы. Таким образом, любой другой код, использующий ту же установку Python и знающий идентификатор, может получить доступ к объекту с соответствующим именем, независимо от того, где определен объект. Элемент связанные имена могут быть любыми имена, существующие в модуле Python; например, имя класса, функции или переменной. Механизм точки входа не заботится о том, к чему относится имя, если оно является импортируемым.
в качестве примера, давайте использовать (имя) функции и воображаемый модуль python с полным именем ' myns.mypkg.mymodule':
def the_function(): "function whose name is 'the_function', in 'mymodule' module" print "hello from the_function"точки входа регистрируются через объявление точек входа в setup.py. для регистрации функции the_function под именем entrypoint вызывается 'my_ep_func':
entry_points = { 'my_ep_group_id': [ 'my_ep_func = myns.mypkg.mymodule:the_function' ] },как показывает пример, точки входа сгруппированы; есть соответствующий API для поиска всех точек входа, принадлежащих группе (пример ниже).
при установке пакета (т. е. запуск 'python setup.py install'), приведенное выше объявление анализируется setuptools. Затем он записывает проанализированную информацию в специальный файл. После этого PKG_RESOURCES API (часть setuptools) можно использовать для поиска точки входа и доступа к объект (ы) с соответствующим именем(АМИ):
import pkg_resources named_objects = {} for ep in pkg_resources.iter_entry_points(group='my_ep_group_id'): named_objects.update({ep.name: ep.load()})здесь setuptools считывает информацию о точке входа, которая была записана в специальных файлах. Он нашел точку входа, импортировал модуль (myns.mypkg.mymodule), и получил the_function, определенный там, при вызове pkg_resources.нагрузка.)(
предполагая, что не было никаких других регистраций точки входа для того же идентификатора группы, вызов the_function будет тогда простым:
>>> named_objects['my_ep_func']() hello from the_functionтаким образом, хотя, возможно, немного сложно чтобы понять сначала, механизм точки входа на самом деле довольно прост в использовании. Он предоставляет полезный инструмент для разработки подключаемого программного обеспечения Python.
с абстрактной точки зрения точки входа используются для создания общесистемного реестра вызываемых объектов Python, реализующих определенные интерфейсы. Существуют API в pkg_resources, чтобы увидеть, какие точки входа рекламируются данным пакетом, а также API, чтобы определить, какие пакеты рекламируют определенную точку входа.
точки входа полезны для одного пакета не использовать плагины, которые находятся в другом пакете. Например, Ян Бик вставить проект использует запись баллы обширно. В этом случае вы можете написать пакет, который объявляет свою фабрику приложений WSGI, используя точку входа
paste.app_factory.другое использование для точек входа-перечисление всех пакетов в системе, которые предоставляют некоторые функции плагина. Элемент TurboGears веб-фреймворк использует
python.templating.enginesточка входа для поиска библиотек шаблонов, которые установлены и доступны.
Comments