diff --git a/devine/core/utilities.py b/devine/core/utilities.py
index 190bbc0..1d94cd4 100644
--- a/devine/core/utilities.py
+++ b/devine/core/utilities.py
@@ -22,6 +22,12 @@ from devine.core.config import config
 from devine.core.constants import LANGUAGE_MAX_DISTANCE
 
 
+def is_relative_to_backport(base: Path, path_: Union[Path, str]) -> bool:
+    """Same as Path.is_relative_to, but back-ported to 3.8.x."""
+    path_ = Path(path_)
+    return path_ == base or path_ in base.parents
+
+
 def import_module_by_path(path: Path) -> ModuleType:
     """Import a Python file by Path as a Module."""
     if not path:
@@ -32,7 +38,7 @@ def import_module_by_path(path: Path) -> ModuleType:
         raise ValueError("Path does not exist")
 
     # compute package hierarchy for relative import support
-    if path.is_relative_to(config.directories.core_dir):
+    if is_relative_to_backport(path, config.directories.core_dir):
         name = []
         _path = path.parent
         while _path.stem != config.directories.core_dir.stem: