diff --git a/src/ipod_nano7_db.py b/src/ipod_nano7_db.py index 8b23081..3984d20 100644 --- a/src/ipod_nano7_db.py +++ b/src/ipod_nano7_db.py @@ -88,19 +88,30 @@ def _import_iop(module_name: str): return _IOP_CACHE[module_name] if not _IOP_READY: - # Evict local shadows ONCE so iOpenPod modules resolve correctly. sys.modules.pop("ipod_device", None) _IOP_READY = True logger.debug("iOpenPod boot: evicted local ipod_device") + src_paths = [p for p in sys.path if p.endswith('/src') or p == 'src'] + for p in src_paths: + sys.path.remove(p) + had_iop = _IOP_ROOT in sys.path if not had_iop: sys.path.insert(0, _IOP_ROOT) + importlib.invalidate_caches() + try: mod = importlib.import_module(module_name) finally: + for p in src_paths: + if p not in sys.path: + sys.path.insert(0, p) if not had_iop: - sys.path.remove(_IOP_ROOT) + try: + sys.path.remove(_IOP_ROOT) + except ValueError: + pass _IOP_CACHE[module_name] = mod return mod