diff --git a/tools/import-debian-package b/tools/import-debian-package
index bad0725787bb109b4397fca89c93b80f978bd4ec..eda6a4762a0215a905ecc15858bc67f7b33907f2 100755
--- a/tools/import-debian-package
+++ b/tools/import-debian-package
@@ -19,7 +19,7 @@ import sys
 from functools import lru_cache
 from gettext import gettext as _
 from pathlib import Path
-from tempfile import TemporaryDirectory
+from tempfile import TemporaryDirectory, mkdtemp
 from typing import Mapping, Optional
 from urllib.error import HTTPError, URLError
 from urllib.parse import quote
@@ -393,32 +393,36 @@ def do_import(args):
     if parse_ref(apertis_tag):
         raise Abort(f"Apertis tag {apertis_tag} already exists, cannot continue")
 
-    with ensure_dir_or_none(args.cache_dir) or TemporaryDirectory() as downloaddir:
-        if args.import_local_dsc:
-            logging.info(f"Overlaying Apertis package version {version}")
-            downloaded = args.import_local_dsc.name
-        else:
-            logging.info("Fetching the package information")
+    downloaddir = (
+        ensure_dir_or_none(args.cache_dir)
+        if ensure_dir_or_none(args.cache_dir) is not None
+        else mkdtemp()
+    )
+    if args.import_local_dsc:
+        logging.info(f"Overlaying Apertis package version {version}")
+        downloaded = args.import_local_dsc.name
+    else:
+        logging.info("Fetching the package information")
 
-            cached_dsc = get_cached_dsc(package, version, args.cache_dir)
+        cached_dsc = get_cached_dsc(package, version, args.cache_dir)
 
-            try:
-                url = args.mirror.rstrip("/") + get_debian_dsc_path(package, version)
-            except KeyboardInterrupt:
-                raise
-            except (KeyError, HTTPError, URLError):
-                if not cached_dsc:
-                    raise Abort(
-                        f"Unable to download source package {package} version {version}"
-                    )
-                else:
-                    logging.warning(
-                        f"Unable to download source package {package} version {version}, but found cached .dsc"
-                    )
-                    url = cached_dsc
-
-            downloaded = fetch(package, version, url, downloaddir, cached_dsc)
-        import_debian_dsc(args, downloaded, upstream, downstream, version)
+        try:
+            url = args.mirror.rstrip("/") + get_debian_dsc_path(package, version)
+        except KeyboardInterrupt:
+            raise
+        except (KeyError, HTTPError, URLError):
+            if not cached_dsc:
+                raise Abort(
+                    f"Unable to download source package {package} version {version}"
+                )
+            else:
+                logging.warning(
+                    f"Unable to download source package {package} version {version}, but found cached .dsc"
+                )
+                url = cached_dsc
+
+        downloaded = fetch(package, version, url, downloaddir, cached_dsc)
+    import_debian_dsc(args, downloaded, upstream, downstream, version)
 
     if args.dsc:
         d = deb822.Dsc(args.dsc)