| | |
| | import importlib.abc |
| | import importlib.util |
| | from pathlib import Path |
| |
|
| | __all__ = [] |
| |
|
| | _PROJECTS = { |
| | "point_rend": "PointRend", |
| | "deeplab": "DeepLab", |
| | "panoptic_deeplab": "Panoptic-DeepLab", |
| | } |
| | _PROJECT_ROOT = Path(__file__).resolve().parent.parent.parent / "projects" |
| |
|
| | if _PROJECT_ROOT.is_dir(): |
| | |
| | |
| |
|
| | class _D2ProjectsFinder(importlib.abc.MetaPathFinder): |
| | def find_spec(self, name, path, target=None): |
| | if not name.startswith("detectron2.projects."): |
| | return |
| | project_name = name.split(".")[-1] |
| | project_dir = _PROJECTS.get(project_name) |
| | if not project_dir: |
| | return |
| | target_file = _PROJECT_ROOT / f"{project_dir}/{project_name}/__init__.py" |
| | if not target_file.is_file(): |
| | return |
| | return importlib.util.spec_from_file_location(name, target_file) |
| |
|
| | import sys |
| |
|
| | sys.meta_path.append(_D2ProjectsFinder()) |
| |
|