pkg_resources.iter_entry_points独自のパッケージを含む、任意のegg内の指定された名前のエントリポイントを一覧表示します。したがって、のentry_pointsエントリにsetup.py次のリストがあり、メタデータを生成するために実行setup.py developした場合、独自のエントリポイントが含まれます。
[myapp.myclasses]
classentry1 = myapp.mymodule:myclassname1
classentry2 = myapp.mymodule:myclassname2
Babelプロジェクトはまさにこれを行います。その中には、とのsetup.py両方のエントリポイントがリストされてbabel.checkersおりbabel.extractors、これらはそれぞれbabel.messages.checkers:_find_checkersとによって検索されbabel.messages.extract:extractます。
ファイル(テンプレートから作成および/または生成するのに十分簡単)が必要ない場合は、代わりに次setup.pyの内部状態を変更する必要があります。pkg_resources.working_set
working_set.entries卵のリストです。プロジェクトの最上位ディレクトリのパスをこれに追加する必要があります。
working_set.entry_keysパスからentriesパッケージ名のリストへのマッピングです。プロジェクトを`working_set.entry_keys[path]=['package.name']として追加します
working_set.by_keyパッケージ名からpkg_resources.Distributionインスタンスへのマッピングです。Distributionインスタンスを作成し、パッケージ名で保存する必要があります: working_set.by_key['package.name'] = yourdistribution。
あなたの目的のために、Distributionインスタンスはかなりまばらにすることができますが、少なくともプロジェクト名を含めます。ただし、エントリポイントマップが必要です。
yourdistribution = Distribution(project_name='package.name')
yourdistribution._ep_map = {'myapp.myclasses', {
'classentry1': entrypointinstance_for_classentry1,
'classentry2': entrypointinstance_for_classentry2,
}}
内部構造_ep_mapは通常、egg-infoメタデータからオンデマンドで解析されます。
これは、バージョン間で変更される可能性のある、文書化されていない内部データ構造に完全に依存していることに注意してください。言い換えれば、あなたはここであなた自身です。代わりにファイルを生成しsetup.py、実行python setup.py developして代わりにeggメタデータを生成します。