f46d0a
diff --git a/virtualenv.py b/virtualenv.py
f46d0a
index 9854324..e5d0883 100755
f46d0a
--- a/virtualenv.py
f46d0a
+++ b/virtualenv.py
f46d0a
@@ -49,7 +49,8 @@ try:
f46d0a
 except NameError:
f46d0a
     basestring = str
f46d0a
 
f46d0a
-py_version = 'python%s.%s' % (sys.version_info[0], sys.version_info[1])
f46d0a
+version = '%s.%s' % (sys.version_info[0], sys.version_info[1])
f46d0a
+py_version = 'python%s' % version
f46d0a
 
f46d0a
 is_jython = sys.platform.startswith('java')
f46d0a
 is_pypy = hasattr(sys, 'pypy_version_info')
f46d0a
@@ -1012,13 +1013,13 @@ def change_prefix(filename, dst_prefix):
f46d0a
 
f46d0a
     if is_darwin:
f46d0a
         prefixes.extend((
f46d0a
-            os.path.join("/Library/Python", sys.version[:3], "site-packages"),
f46d0a
+            os.path.join("/Library/Python", version, "site-packages"),
f46d0a
             os.path.join(sys.prefix, "Extras", "lib", "python"),
f46d0a
-            os.path.join("~", "Library", "Python", sys.version[:3], "site-packages"),
f46d0a
+            os.path.join("~", "Library", "Python", version, "site-packages"),
f46d0a
             # Python 2.6 no-frameworks
f46d0a
-            os.path.join("~", ".local", "lib","python", sys.version[:3], "site-packages"),
f46d0a
+            os.path.join("~", ".local", "lib","python", version, "site-packages"),
f46d0a
             # System Python 2.7 on OSX Mountain Lion
f46d0a
-            os.path.join("~", "Library", "Python", sys.version[:3], "lib", "python", "site-packages")))
f46d0a
+            os.path.join("~", "Library", "Python", version, "lib", "python", "site-packages")))
f46d0a
 
f46d0a
     if hasattr(sys, 'real_prefix'):
f46d0a
         prefixes.append(sys.real_prefix)
f46d0a
@@ -1099,7 +1100,7 @@ def copy_required_modules(dst_prefix, symlink):
f46d0a
             # special-case custom readline.so on OS X, but not for pypy:
f46d0a
             if modname == 'readline' and sys.platform == 'darwin' and not (
f46d0a
                     is_pypy or filename.endswith(join('lib-dynload', 'readline.so'))):
f46d0a
-                dst_filename = join(dst_prefix, 'lib', 'python%s' % sys.version[:3], 'readline.so')
f46d0a
+                dst_filename = join(dst_prefix, 'lib', py_version, 'readline.so')
f46d0a
             elif modname == 'readline' and sys.platform == 'win32':
f46d0a
                 # special-case for Windows, where readline is not a
f46d0a
                 # standard module, though it may have been installed in
f46d0a
@@ -1398,8 +1399,7 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear, sy
f46d0a
     if not is_win:
f46d0a
         # Ensure that 'python', 'pythonX' and 'pythonX.Y' all exist
f46d0a
         py_exe_version_major = 'python%s' % sys.version_info[0]
f46d0a
-        py_exe_version_major_minor = 'python%s.%s' % (
f46d0a
-            sys.version_info[0], sys.version_info[1])
f46d0a
+        py_exe_version_major_minor = py_version
f46d0a
         py_exe_no_version = 'python'
f46d0a
         required_symlinks = [ py_exe_no_version, py_exe_version_major,
f46d0a
                          py_exe_version_major_minor ]
f46d0a
@@ -1547,7 +1547,8 @@ def fix_local_scheme(home_dir, symlink=True):
f46d0a
     except ImportError:
f46d0a
         pass
f46d0a
     else:
f46d0a
-        if sysconfig._get_default_scheme() == 'posix_local':
f46d0a
+        get_scheme = getattr(sysconfig, 'get_default_scheme', None) or sysconfig._get_default_scheme
f46d0a
+        if get_scheme() == 'posix_local':
f46d0a
             local_path = os.path.join(home_dir, 'local')
f46d0a
             if not os.path.exists(local_path):
f46d0a
                 os.mkdir(local_path)
f46d0a
@@ -1575,7 +1576,7 @@ def fix_lib64(lib_dir, symlink=True):
f46d0a
 
f46d0a
     logger.debug('This system uses lib64; symlinking lib64 to lib')
f46d0a
 
f46d0a
-    assert os.path.basename(lib_dir) == 'python%s' % sys.version[:3], (
f46d0a
+    assert os.path.basename(lib_dir) == py_version, (
f46d0a
         "Unexpected python lib dir: %r" % lib_dir)
f46d0a
     lib_parent = os.path.dirname(lib_dir)
f46d0a
     top_level = os.path.dirname(lib_parent)
f46d0a
@@ -1637,7 +1638,7 @@ def make_environment_relocatable(home_dir):
f46d0a
     fixup_pth_and_egg_link(home_dir)
f46d0a
     ## FIXME: need to fix up distutils.cfg
f46d0a
 
f46d0a
-OK_ABS_SCRIPTS = ['python', 'python%s' % sys.version[:3],
f46d0a
+OK_ABS_SCRIPTS = ['python', py_version,
f46d0a
                   'activate', 'activate.bat', 'activate_this.py',
f46d0a
                   'activate.fish', 'activate.csh']
f46d0a
 
f46d0a
@@ -1647,7 +1648,7 @@ def fixup_scripts(home_dir, bin_dir):
f46d0a
             '%s /c' % os.path.normcase(os.environ.get('COMSPEC', 'cmd.exe')),
f46d0a
             '', '.exe')
f46d0a
     else:
f46d0a
-        new_shebang_args = ('/usr/bin/env', sys.version[:3], '')
f46d0a
+        new_shebang_args = ('/usr/bin/env', version, '')
f46d0a
 
f46d0a
     # This is what we expect at the top of scripts:
f46d0a
     shebang = '#!%s' % os.path.normcase(os.path.join(
f46d0a
diff --git a/virtualenv_embedded/activate_this.py b/virtualenv_embedded/activate_this.py
f46d0a
index f18193b..8272888 100644
f46d0a
--- a/virtualenv_embedded/activate_this.py
f46d0a
+++ b/virtualenv_embedded/activate_this.py
f46d0a
@@ -19,7 +19,7 @@ base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
f46d0a
 if sys.platform == 'win32':
f46d0a
     site_packages = os.path.join(base, 'Lib', 'site-packages')
f46d0a
 else:
f46d0a
-    site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages')
f46d0a
+    site_packages = os.path.join(base, 'lib', 'python%s.%s' % (sys.version_info[0], sys.version_info[1]), 'site-packages')
f46d0a
 prev_sys_path = list(sys.path)
f46d0a
 import site
f46d0a
 site.addsitedir(site_packages)
f46d0a
diff --git a/virtualenv_embedded/site.py b/virtualenv_embedded/site.py
f46d0a
index 7969769..b3603ff 100644
f46d0a
--- a/virtualenv_embedded/site.py
f46d0a
+++ b/virtualenv_embedded/site.py
f46d0a
@@ -134,7 +134,7 @@ def addbuilddir():
f46d0a
     """Append ./build/lib.<platform> in case we're running in the build dir
f46d0a
     (especially for Guido :-)"""
f46d0a
     from distutils.util import get_platform
f46d0a
-    s = "build/lib.%s-%.3s" % (get_platform(), sys.version)
f46d0a
+    s = "build/lib.%s-%s.%s" % (get_platform(), sys.version_info[0], sys.version_info[1])
f46d0a
     if hasattr(sys, 'gettotalrefcount'):
f46d0a
         s += '-pydebug'
f46d0a
     s = os.path.join(os.path.dirname(sys.path[-1]), s)
f46d0a
@@ -162,7 +162,7 @@ def addpackage(sitedir, name, known_paths):
f46d0a
         reset = 0
f46d0a
     fullname = os.path.join(sitedir, name)
f46d0a
     try:
f46d0a
-        f = open(fullname, "rU")
f46d0a
+        f = open(fullname, "r")
f46d0a
     except IOError:
f46d0a
         return
f46d0a
     try:
f46d0a
@@ -222,21 +222,21 @@ def addsitepackages(known_paths, sys_prefix=sys.prefix, exec_prefix=sys.exec_pre
f46d0a
 
f46d0a
                 if prefix.startswith("/System/Library/Frameworks/"): # Apple's Python
f46d0a
 
f46d0a
-                    sitedirs = [os.path.join("/Library/Python", sys.version[:3], "site-packages"),
f46d0a
+                    sitedirs = [os.path.join("/Library/Python", "%s.%s" % (sys.version_info[0], sys.version_info[1]), "site-packages"),
f46d0a
                                 os.path.join(prefix, "Extras", "lib", "python")]
f46d0a
 
f46d0a
                 else: # any other Python distros on OSX work this way
f46d0a
                     sitedirs = [os.path.join(prefix, "lib",
f46d0a
-                                             "python" + sys.version[:3], "site-packages")]
f46d0a
+                                             "python" + "%s.%s" % (sys.version_info[0], sys.version_info[1]), "site-packages")]
f46d0a
 
f46d0a
             elif os.sep == '/':
f46d0a
                 sitedirs = [os.path.join(prefix,
f46d0a
                                          "lib",
f46d0a
-                                         "python" + sys.version[:3],
f46d0a
+                                         "python%s.%s" % (sys.version_info[0], sys.version_info[1]),
f46d0a
                                          "site-packages"),
f46d0a
                             os.path.join(prefix, "lib", "site-python"),
f46d0a
-                            os.path.join(prefix, "python" + sys.version[:3], "lib-dynload")]
f46d0a
-                lib64_dir = os.path.join(prefix, "lib64", "python" + sys.version[:3], "site-packages")
f46d0a
+                            os.path.join(prefix, "python%s.%s" % (sys.version_info[0], sys.version_info[1]), "lib-dynload")]
f46d0a
+                lib64_dir = os.path.join(prefix, "lib64", "python%s.%s" % (sys.version_info[0], sys.version_info[1]), "site-packages")
f46d0a
                 if (os.path.exists(lib64_dir) and
f46d0a
                     os.path.realpath(lib64_dir) not in [os.path.realpath(p) for p in sitedirs]):
f46d0a
                     if _is_64bit:
f46d0a
@@ -251,11 +251,11 @@ def addsitepackages(known_paths, sys_prefix=sys.prefix, exec_prefix=sys.exec_pre
f46d0a
                     pass
f46d0a
                 # Debian-specific dist-packages directories:
f46d0a
                 sitedirs.append(os.path.join(prefix, "local/lib",
f46d0a
-                                             "python" + sys.version[:3],
f46d0a
+                                             "python%s.%s" % (sys.version_info[0], sys.version_info[1]),
f46d0a
                                              "dist-packages"))
f46d0a
                 if sys.version[0] == '2':
f46d0a
                     sitedirs.append(os.path.join(prefix, "lib",
f46d0a
-                                                 "python" + sys.version[:3],
f46d0a
+                                                 "python%s.%s" % (sys.version_info[0], sys.version_info[1]),
f46d0a
                                                  "dist-packages"))
f46d0a
                 else:
f46d0a
                     sitedirs.append(os.path.join(prefix, "lib",
f46d0a
@@ -275,7 +275,7 @@ def addsitepackages(known_paths, sys_prefix=sys.prefix, exec_prefix=sys.exec_pre
f46d0a
                             os.path.join(home,
f46d0a
                                          'Library',
f46d0a
                                          'Python',
f46d0a
-                                         sys.version[:3],
f46d0a
+                                         '%s.%s' % (sys.version_info[0], sys.version_info[1]),
f46d0a
                                          'site-packages'))
f46d0a
             for sitedir in sitedirs:
f46d0a
                 if os.path.isdir(sitedir):
f46d0a
@@ -335,7 +335,7 @@ def addusersitepackages(known_paths):
f46d0a
         else:
f46d0a
             USER_BASE = joinuser(base, "Python")
f46d0a
         USER_SITE = os.path.join(USER_BASE,
f46d0a
-                                 "Python" + sys.version[0] + sys.version[2],
f46d0a
+                                 "Python%s%s" % (sys.version_info[0], sys.version_info[1]),
f46d0a
                                  "site-packages")
f46d0a
     else:
f46d0a
         if env_base:
f46d0a
@@ -343,7 +343,7 @@ def addusersitepackages(known_paths):
f46d0a
         else:
f46d0a
             USER_BASE = joinuser("~", ".local")
f46d0a
         USER_SITE = os.path.join(USER_BASE, "lib",
f46d0a
-                                 "python" + sys.version[:3],
f46d0a
+                                 "python%s.%s" % (sys.version_info[0], sys.version_info[1]),
f46d0a
                                  "site-packages")
f46d0a
 
f46d0a
     if ENABLE_USER_SITE and os.path.isdir(USER_SITE):
f46d0a
@@ -351,7 +351,7 @@ def addusersitepackages(known_paths):
f46d0a
     if ENABLE_USER_SITE:
f46d0a
         for dist_libdir in ("lib", "local/lib"):
f46d0a
             user_site = os.path.join(USER_BASE, dist_libdir,
f46d0a
-                                     "python" + sys.version[:3],
f46d0a
+                                     "python%s.%s" % (sys.version_info[0], sys.version_info[1]),
f46d0a
                                      "dist-packages")
f46d0a
             if os.path.isdir(user_site):
f46d0a
                 addsitedir(user_site, known_paths)
f46d0a
@@ -426,7 +426,7 @@ class _Printer(object):
f46d0a
             for filename in self.__files:
f46d0a
                 filename = os.path.join(dir, filename)
f46d0a
                 try:
f46d0a
-                    fp = open(filename, "rU")
f46d0a
+                    fp = open(filename, "r")
f46d0a
                     data = fp.read()
f46d0a
                     fp.close()
f46d0a
                     break
f46d0a
@@ -581,9 +581,9 @@ def virtual_install_main_packages():
f46d0a
     elif sys.platform == 'win32':
f46d0a
         paths = [os.path.join(sys.real_prefix, 'Lib'), os.path.join(sys.real_prefix, 'DLLs')]
f46d0a
     else:
f46d0a
-        paths = [os.path.join(sys.real_prefix, 'lib', 'python'+sys.version[:3])]
f46d0a
+        paths = [os.path.join(sys.real_prefix, 'lib', 'python%s.%s' % (sys.version_info[0], sys.version_info[1]))]
f46d0a
         hardcoded_relative_dirs = paths[:] # for the special 'darwin' case below
f46d0a
-        lib64_path = os.path.join(sys.real_prefix, 'lib64', 'python'+sys.version[:3])
f46d0a
+        lib64_path = os.path.join(sys.real_prefix, 'lib64', 'python%s.%s' % (sys.version_info[0], sys.version_info[1]))
f46d0a
         if os.path.exists(lib64_path):
f46d0a
             if _is_64bit:
f46d0a
                 paths.insert(0, lib64_path)
f46d0a
@@ -600,7 +600,7 @@ def virtual_install_main_packages():
f46d0a
             # This is a non-multiarch aware Python.  Fallback to the old way.
f46d0a
             arch = sys.platform
f46d0a
         plat_path = os.path.join(sys.real_prefix, 'lib',
f46d0a
-                                 'python'+sys.version[:3],
f46d0a
+                                 'python%s.%s' % (sys.version_info[0], sys.version_info[1]),
f46d0a
                                  'plat-%s' % arch)
f46d0a
         if os.path.exists(plat_path):
f46d0a
             paths.append(plat_path)