たくさんの例があります。たとえば、コンソール スクリプトを定義するすべてのプロジェクトでそれらが使用されます。GitHub をすばやく検索すると、たくさんの情報が表示されます。
1 つの特定の例 ( GitHub にないもの)に焦点を当てます: Babel .
Babel はentry_points
、コンソール スクリプトと、翻訳可能なテキスト抽出の拡張ポイントの定義の両方に使用します。setup.py
ソースを参照してください:
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
""",
)
ツールは、エントリ ポイントを使用してコマンドライン スクリプトを作成します (モジュール内で callable を実行する という名前pip
のスクリプト) 。zc.buildout
console_scripts
pybabel
main()
babel.messages.frontend
エントリ ポイントは、distutils.commands
実行時に使用できる追加のコマンドを定義しますsetup.py
。これらを独自のプロジェクトで使用して、セットアップ スクリプトから直接 Babel コマンドライン ユーティリティを呼び出すことができます。
最後に、独自のチェッカーとエクストラクタを登録します。エントリ ポイントは、 moduleを使用してfunctionbabel.extractors
によって読み込まれ、そのエントリ ポイントを登録したインストール済みのすべての Python プロジェクトにアクセスできます。次のコードは、これらのエントリで特定のエクストラクタを探します。babel.messages.extract.extract
setuptools
pkg_resources
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 はそれを利用できます。