Issue #23399: pyvenv creates relative symlinks where possible.
diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py
index 3a7e8e2..3d606ef 100644
--- a/Lib/venv/__init__.py
+++ b/Lib/venv/__init__.py
@@ -141,10 +141,9 @@
         # Issue 21197: create lib64 as a symlink to lib on 64-bit non-OS X POSIX
         if ((sys.maxsize > 2**32) and (os.name == 'posix') and
             (sys.platform != 'darwin')):
-            p = os.path.join(env_dir, 'lib')
             link_path = os.path.join(env_dir, 'lib64')
             if not os.path.exists(link_path):   # Issue #21643
-                os.symlink(p, link_path)
+                os.symlink('lib', link_path)
         context.bin_path = binpath = os.path.join(env_dir, binname)
         context.bin_name = binname
         context.env_exe = os.path.join(binpath, exename)
@@ -178,7 +177,7 @@
                 result = f.startswith('python') and f.endswith('.exe')
             return result
 
-    def symlink_or_copy(self, src, dst):
+    def symlink_or_copy(self, src, dst, relative_symlinks_ok=False):
         """
         Try symlinking a file, and if that fails, fall back to copying.
         """
@@ -186,7 +185,11 @@
         if not force_copy:
             try:
                 if not os.path.islink(dst): # can't link to itself!
-                    os.symlink(src, dst)
+                    if relative_symlinks_ok:
+                        assert os.path.dirname(src) == os.path.dirname(dst)
+                        os.symlink(os.path.basename(src), dst)
+                    else:
+                        os.symlink(src, dst)
             except Exception:   # may need to use a more specific exception
                 logger.warning('Unable to symlink %r to %r', src, dst)
                 force_copy = True
@@ -201,7 +204,6 @@
                         being processed.
         """
         binpath = context.bin_path
-        exename = context.python_exe
         path = context.env_exe
         copier = self.symlink_or_copy
         copier(context.executable, path)
@@ -214,7 +216,7 @@
                 if not os.path.exists(path):
                     # Issue 18807: make copies if
                     # symlinks are not wanted
-                    copier(context.env_exe, path)
+                    copier(context.env_exe, path, relative_symlinks_ok=True)
                     if not os.path.islink(path):
                         os.chmod(path, 0o755)
         else:
diff --git a/Misc/NEWS b/Misc/NEWS
index 1fedcf5..c13372a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -59,6 +59,8 @@
 Library
 -------
 
+- Issue #23399: pyvenv creates relative symlinks where possible.
+
 - Issue #23099: Closing io.BytesIO with exported buffer is rejected now to
   prevent corrupting exported buffer.