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メタデータを生成します。