python执行报错 error: Unable to find vcvarsall.bat

(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 Studio4.0Visual C++ 4.0
Visual Studio 975.0Visual C++ 5.0
Visual Studio 6.06.0Visual C++ 6.0
Visual Studio .NET 20027.0Visual C++ 2002
Visual Studio .NET 20037.1Visual C++ 2003
Visual Studio 20058.0Visual C++ 2005
Visual Studio 20089.0Visual C++ 2008
Visual Studio 201010.0Visual C++ 2010
Visual Studio 201211.0Visual C++ 2012
Visual Studio 201312.0Visual C++ 2013
Visual Studio 201514.0Visual C++ 2015
Visual Studio 2015 RTM14.0Visual C++ 2015

因为是python3.7,基本现在还没更新到这个具体版本。

当前主流Python版本与VC和VS的版本对应关系及各版本VS下载地址:

CPythonVisual C++Visual StudioVisual Studio下载地址
2.6, 2.7, 3.0, 3.1, 3.29.0Visual Studio 2008x86下载 x64下载
3.3, 3.410.0Visual Studio 2010x86下载 x64下载
3.514.0Visual 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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值