diff --git a/Lib/packaging/install.py b/Lib/packaging/install.py
index 3904727..92657ea 100644
--- a/Lib/packaging/install.py
+++ b/Lib/packaging/install.py
@@ -47,10 +47,8 @@
         destination = tempfile.mkdtemp()
 
     for old in files:
-        # not using os.path.join() because basename() might not be
-        # unique in destination
-        new = "%s%s" % (destination, old)
-
+        filename = os.path.split(old)[-1]
+        new = os.path.join(destination, filename)
         # try to make the paths.
         try:
             os.makedirs(os.path.dirname(new))
diff --git a/Lib/packaging/tests/test_install.py b/Lib/packaging/tests/test_install.py
index 7bdee94..01c3dcf 100644
--- a/Lib/packaging/tests/test_install.py
+++ b/Lib/packaging/tests/test_install.py
@@ -43,16 +43,18 @@
         self.version = "fake"
         if files:
             for f in range(0, 3):
-                self._real_files.append(mkstemp())
+                fp, fn = mkstemp()
+                os.close(fp)
+                self._real_files.append(fn)
 
     def _unlink_installed_files(self):
         if self._files:
-            for f in self._real_files:
-                os.unlink(f[1])
+            for fn in self._real_files:
+                os.unlink(fn)
 
     def list_installed_files(self, **args):
         if self._files:
-            return [f[1] for f in self._real_files]
+            return self._real_files
 
     def get_install(self, **args):
         return self.list_installed_files()
@@ -231,8 +233,10 @@
         output = [o for o in install._move_files(files, newpath)]
 
         # check that output return the list of old/new places
-        for f in files:
-            self.assertIn((f, '%s%s' % (newpath, f)), output)
+        for file_ in files:
+            name = os.path.split(file_)[-1]
+            newloc = os.path.join(newpath, name)
+            self.assertIn((file_, newloc), output)
 
         # remove the files
         for f in [o[1] for o in output]:  # o[1] is the new place
