Registry.py调用方式:
data.yml文件内容
调用顺序
-
先导入库文件
from database import registry
registry.load_database("D:/NET_1/pyannote/AMI/AMI-diarization-setup/pyannote/database.yml")
-
__init__文件中
from .registry import registry, LoadingMode
-
registry.py最后实例化了Registry对象
registry = Registry()
-
yml文件导入方式也是在registry.py最后
for yml in _find_default_ymls(): registry.load_database(yml)
_find_default_ymls:是一个函数,用于查找默认的数据库配置文件路径。
它会在以下位置查找配置文件:
用户主目录下的 ~/.pyannote/database_test.yml。
当前工作目录下的 database_test.yml。
环境变量 PYANNOTE_DATABASE_CONFIG 中指定的路径。
完整的调用流程
-
程序启动时就已经实例化创建好对象了:
当你在其他文件中通过
from pyannote.database import registry 导入 registry 时
,当 registry.py 文件被导入时,Python 会执行文件中的所有顶层代码(即不在函数或类中的代码)。registry = Registry():创建 Registry 单例对象。
for yml in _find_default_ymls():
registry.load_database(yml):加载默认的数据库配置文件。 -
手动加载额外配置文件:
registry.load_database(“D:/NET_1/pyannote/AMI/AMI-diarization-setup/pyannote/database.yml”):加载指定的配置文件。
-
获取协议实例:
protocol =
registry.get_protocol(“MyDatabase.MyTask.MyProtocol”):根据协议名称获取协议实例。
代码详细分析:
提示:这里填写问题的分析:
def _load_database_helper(
self,
database_yml: Union[Text, Path],
mode: LoadingMode = LoadingMode.KEEP,
loading: Set[Path] = set(),
):
# 绝对路径
database_yml = Path(database_yml).expanduser()