diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
index 0c13bba..69264d2 100644
--- a/Lib/sysconfig.py
+++ b/Lib/sysconfig.py
@@ -3,7 +3,7 @@
 """
 import sys
 import os
-from os.path import pardir, abspath
+from os.path import pardir, realpath
 
 _INSTALL_SCHEMES = {
     'posix_prefix': {
@@ -84,16 +84,16 @@
 _EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
 _CONFIG_VARS = None
 _USER_BASE = None
-_PROJECT_BASE = abspath(os.path.dirname(sys.executable))
+_PROJECT_BASE = os.path.dirname(realpath(sys.executable))
 
 if os.name == "nt" and "pcbuild" in _PROJECT_BASE[-8:].lower():
-    _PROJECT_BASE = abspath(os.path.join(_PROJECT_BASE, pardir))
+    _PROJECT_BASE = realpath(os.path.join(_PROJECT_BASE, pardir))
 # PC/VS7.1
 if os.name == "nt" and "\\pc\\v" in _PROJECT_BASE[-10:].lower():
-    _PROJECT_BASE = abspath(os.path.join(_PROJECT_BASE, pardir, pardir))
+    _PROJECT_BASE = realpath(os.path.join(_PROJECT_BASE, pardir, pardir))
 # PC/AMD64
 if os.name == "nt" and "\\pcbuild\\amd64" in _PROJECT_BASE[-14:].lower():
-    _PROJECT_BASE = abspath(os.path.join(_PROJECT_BASE, pardir, pardir))
+    _PROJECT_BASE = realpath(os.path.join(_PROJECT_BASE, pardir, pardir))
 
 def is_python_build():
     for fn in ("Setup.dist", "Setup.local"):
@@ -294,7 +294,7 @@
     vars['SO'] = '.pyd'
     vars['EXE'] = '.exe'
     vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT
-    vars['BINDIR'] = os.path.dirname(os.path.abspath(sys.executable))
+    vars['BINDIR'] = os.path.dirname(realpath(sys.executable))
 
 #
 # public APIs
diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py
index c8bae73..606ccd0 100644
--- a/Lib/test/test_sysconfig.py
+++ b/Lib/test/test_sysconfig.py
@@ -8,9 +8,10 @@
 import sys
 import os
 import shutil
+import subprocess
 from copy import copy, deepcopy
 
-from test.test_support import run_unittest, TESTFN
+from test.test_support import run_unittest, TESTFN, unlink, get_attribute
 
 import sysconfig
 from sysconfig import (get_paths, get_platform, get_config_vars,
@@ -238,6 +239,23 @@
                   'posix_prefix', 'posix_user')
         self.assertEquals(get_scheme_names(), wanted)
 
+    def test_symlink(self):
+        # Issue 7880
+        symlink = get_attribute(os, "symlink")
+        def get(python):
+            cmd = [python, '-c',
+                   'import sysconfig; print sysconfig.get_platform()']
+            p = subprocess.Popen(cmd, stdout=subprocess.PIPE,
+                                      stderr=subprocess.PIPE)
+            return p.communicate()
+        real = os.path.realpath(sys.executable)
+        link = os.path.abspath(TESTFN)
+        symlink(real, link)
+        try:
+            self.assertEqual(get(real), get(link))
+        finally:
+            unlink(link)
+
 
 def test_main():
     run_unittest(TestSysConfig)
diff --git a/Misc/NEWS b/Misc/NEWS
index 85fe3c0..8f450a9 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -20,6 +20,8 @@
 Library
 -------
 
+- Issue #7880: Fix sysconfig when the python executable is a symbolic link.
+
 - Issue #7624: Fix isinstance(foo(), collections.Callable) for old-style
   classes.
 
