diff --git a/setup.py b/setup.py
index 2282d8ac0fa9c8ea4b1aaf847f22c534129f22e4_c2V0dXAucHk=..ff4df09547429d32a8e75476fc752b834b1b824e_c2V0dXAucHk= 100644
--- a/setup.py
+++ b/setup.py
@@ -1454,7 +1454,9 @@
         target = [target_dir]
         target.extend(self.name.split('.'))
         target[-1] += DYLIB_SUFFIX
+        target = os.path.join(*target)
+        os.makedirs(os.path.dirname(target), exist_ok=True)
         shutil.copy2(
             os.path.join(
                 self.rusttargetdir, self.dylibname + self.rustdylibsuffix()
             ),
@@ -1457,8 +1459,8 @@
         shutil.copy2(
             os.path.join(
                 self.rusttargetdir, self.dylibname + self.rustdylibsuffix()
             ),
-            os.path.join(*target),
+            target,
         )