загрузок примеров. Например, любой проект, который определяет консольные скрипты, использует их. A quick search on GitHub дает вам много возможностей для просмотра.
Я сосредоточусь на одном конкретном примере (то есть не на GitHub): Babel.
Бабель использует как entry_points
для обоих консольных скриптов, так и для определения точек расширения для перевода текста. Смотрите их setup.py
source:
if have_setuptools:
extra_arguments = dict(
zip_safe = False,
test_suite = 'babel.tests.suite',
tests_require = ['pytz'],
entry_points = """
[console_scripts]
pybabel = babel.messages.frontend:main
[distutils.commands]
compile_catalog = babel.messages.frontend:compile_catalog
extract_messages = babel.messages.frontend:extract_messages
init_catalog = babel.messages.frontend:init_catalog
update_catalog = babel.messages.frontend:update_catalog
[distutils.setup_keywords]
message_extractors = babel.messages.frontend:check_message_extractors
[babel.checkers]
num_plurals = babel.messages.checkers:num_plurals
python_format = babel.messages.checkers:python_format
[babel.extractors]
ignore = babel.messages.extract:extract_nothing
python = babel.messages.extract:extract_python
javascript = babel.messages.extract:extract_javascript
""",
)
инструменты, как pip
и zc.buildout
использовать точку входа console_scripts
для создания командной строки сценариев (один называется pybabel
, запустив main()
отозваны в babel.messages.frontend
модуле).
Точки входа определяют дополнительные команды, которые можно использовать при запуске setup.py
; они могут использоваться в ваших собственных проектах для вызова служебных программ командной строки Babel прямо из вашего сценария установки.
Последнее, но не менее важное, оно регистрирует собственные шашки и экстракторы. Точка входа babel.extractors
загружается babel.messages.extract.extract
function, используя setuptools
pkg_resources
module, предоставляя доступ ко всем установленным проектам Python, которые зарегистрировали эту точку входа. Следующий код ищет конкретный экстрактор в этих записях:
try:
from pkg_resources import working_set
except ImportError:
pass
else:
for entry_point in working_set.iter_entry_points(GROUP_NAME,
method):
func = entry_point.load(require=True)
break
Это позволяет любому проекту регистрировать дополнительные экстракторы; просто добавьте точку входа в ваш setup.py
, и Babel может ее использовать.