(1)先查询需要的版本
①查看 MSC 版本
打开cmd窗口,输入命令:python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
MSC v.1916 ,当前是1916
②获取主版本号
“MSC V.”后面那个数字1500就是编译当前Python所使用的VC的版本信息,但还不是我们要找的那个内部版本号,我们要从这个版本信息中找到主版本号majorVersion和次版本号minorVersion,majorVersion + minorVersion
的结果才是我们要找那个内部版本号。
我当前的操作系统是Win 10,在Python的安装目录下可以找到这样一个Python文件:
D:\python\Lib\distutils\msvccompiler.py
从文件名就能看出来这个Python文件就是用来处理与VC编译器有关的操作的。在该Python文件中可以找到这样一个函数:
def get_build_version():
"""Return the version of MSVC that was used to build Python.
For Python 2.3 and up, the version number is included in
sys.version. For earlier versions, assume the compiler is MSVC 6.
"""
prefix = "MSC v."
i = sys.version.find(prefix)
if i == -1:
return 6
i = i + len(prefix)
s, rest = sys.version[i:].split(" ", 1)
majorVersion = int(s[:-2]) - 6
if majorVersion >= 13:
# v13 was skipped and should be v14
majorVersion += 1
minorVersion = int(s[2:3]) / 10.0
# I don't think paths are affected by minor version in version 6
if majorVersion == 6:
minorVersion = 0
if majorVersion >= 6:
return majorVersion + minorVersion
# else we don't know what version of the compiler this is
return None
在上面代码中可以看到这两段:
majorVersion = int(s[:-2]) - 6
minorVersion = int(s[2:3]) / 10.0
s就是MSC v.1916 的1916
int(s[:-2])代表取前面2个数字那就是19
int(s[2:3])代表取后面2个数字那就是16
所以:
majorVersion = 19-6=13
minorVersion = 16/10.0=1.6 (不知道这里是不是算1)
- 所以我们可以得到我们要找的那个内部版本号:majorVersion + minorVersion = 13+1.6=14.6。(可能是算14吧)
VS名称 | 内部版本 | VC名称 |
---|---|---|
Visual Studio | 4.0 | Visual C++ 4.0 |
Visual Studio 97 | 5.0 | Visual C++ 5.0 |
Visual Studio 6.0 | 6.0 | Visual C++ 6.0 |
Visual Studio .NET 2002 | 7.0 | Visual C++ 2002 |
Visual Studio .NET 2003 | 7.1 | Visual C++ 2003 |
Visual Studio 2005 | 8.0 | Visual C++ 2005 |
Visual Studio 2008 | 9.0 | Visual C++ 2008 |
Visual Studio 2010 | 10.0 | Visual C++ 2010 |
Visual Studio 2012 | 11.0 | Visual C++ 2012 |
Visual Studio 2013 | 12.0 | Visual C++ 2013 |
Visual Studio 2015 | 14.0 | Visual C++ 2015 |
Visual Studio 2015 RTM | 14.0 | Visual C++ 2015 |
因为是python3.7,基本现在还没更新到这个具体版本。
当前主流Python版本与VC和VS的版本对应关系及各版本VS下载地址:
CPython | Visual C++ | Visual Studio | Visual Studio下载地址 |
---|---|---|---|
2.6, 2.7, 3.0, 3.1, 3.2 | 9.0 | Visual Studio 2008 | x86下载 x64下载 |
3.3, 3.4 | 10.0 | Visual Studio 2010 | x86下载 x64下载 |
3.5 | 14.0 | Visual Studio 2015 | 下载 |
(2)安装对应VC或VS版本
VC 编译器版本(WIKI)
Visual C++ 4.x MSC_VER=1000
Visual C++ 5 MSC_VER=1100
Visual C++ 6 MSC_VER=1200
Visual C++ .NET MSC_VER=1300
Visual C++ .NET 2003 MSC_VER=1310
Visual C++ 2005 (8.0) MSC_VER=1400
Visual C++ 2008 (9.0) MSC_VER=1500
Visual C++ 2010 (10.0) MSC_VER=1600
Visual C++ 2012 (11.0) MSC_VER=1700
Visual C++ 2013 (12.0) MSC_VER=1800
Visual C++ 2015 (14.0) MSC_VER=1900
Visual C++ 2017 (15.0) MSC_VER=1910
Visual Studio version _MSC_VER
Visual Studio 6.0 1200
Visual Studio .NET 2002 (7.0) 1300
Visual Studio .NET 2003 (7.1) 1310
Visual Studio 2005 (8.0) 1400
Visual Studio 2008 (9.0) 1500
Visual Studio 2010 (10.0) 1600
Visual Studio 2012 (11.0) 1700
Visual Studio 2013 (12.0) 1800
Visual Studio 2015 (14.0) 1900
Visual Studio 2017 RTW (15.0) 1910
Visual Studio 2017 version 15.3 1911
Visual Studio 2017 version 15.5 1912
Visual Studio 2017 version 15.6 1913
Visual Studio 2017 version 15.7 1914
Visual Studio 2017 version 15.8 1915
Visual Studio 2017 version 15.9 1916
Visual Studio 2019 RTW (16.0) 1920
因为VS包含VC的,所以1916对应VS2017中的15.9版本。安装VS2017 -15.9版本。
============================================
对于VC++,直接安装最新版,下载地址:
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
=========================================
对于VS,直接安装最新版
微软官方网址(在这里找到对应版本或者最新版本下载安装):https://visualstudio.microsoft.com/zh-hans/downloads/