【记录】Cython出现error:Unable to find vcvarsall.bat(1)

原文链接

(2019.11.22已解决)Cython出现error:Unable to find vcvarsall.bat - 灰信网(软件开发博客聚合)

  • VS与VC及内部版本的对应关系如下:

    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 201413.0Visual C++ 2014
    Visual Studio 201514.0Visual C++ 2015
    Visual Studio 2015 RTM14.0Visual C++ 2015
  • 问题解释

    没有找到vcvarsall.bat指定的vc++编译器进行编译。因为在windows平台下,cython是调用vc++编译器对生成的c文件进行bi生成编译,从而生成pyd文件的。

    这种问题是因为C编译器相关的配置没有设置好。

    具体本机要求哪个VC++版本,在下述文件中查看:

    .../Python37/Lib/distutils/msvccompiler.py
    
    • 1

    找到如下函数:

    在这里插入图片描述

    其中提到,2.3版本以后,需要的VC版本在sys.version中,进入cmd >> python >> import sys >> sys.version进行查看:

    在这里插入图片描述

    其中MSC.v后面那个数字1900就是编译当前Python所使用的VC的版本信息,但还不是我们要找的那个内部版本号,我们要从这个版本信息中找到主版本号majorVersion和次版本号minorVersionmajorVersion + minorVersion的结果才是我们要找那个内部版本号。那么这里的majorVersionminorVersion怎么获取到呢?我们可以从上面的get_build_version()函数中找到答案:

    majorVersion = int(s[:-2]) - 6
    minorVersion = int(s[2:3]) / 10.0
    # s就是上面的1900
    majorVersion = 19 - 6 = 13
    minorVersion = 00 / 10.0 = 0
    

    所以,内部版本号就是majorVersion + minorVersion = 13 + 0.0 = 13.0,根据上述对照表,

    对应VS2014VC2014

    查看程序中,确实没有2014

    在这里插入图片描述

    但,问题是,我找不到VS2014,通过这里介绍,Python3.6对应VS2015

    PythonMicrosoft Visual StudioCPthon
    Python 2.7Microsoft Visual Studio 2008[MSC v.1500 64 bit (AMD64)]
    Python 3.4Microsoft Visual Studio 2010[MSC v.1600 64 bit (AMD64)]
    Python 3.5Microsoft Visual Studio 2015[MSC v.1900 64 bit (AMD64)]
    Python 3.6Microsoft Visual Studio 2015[MSC v.1900 64 bit (AMD64)]
    Python 3.7Microsoft Visual Studio 2015[MSC v.1912 64 bit (AMD64)]

    先偷个懒,下载小一点的Visual C++ Redistributable for Visual Studio 2015,安装显示已经有了,安装失败。

    因此下载安装Microsoft Visual Studio 2015

  • 需要自定义安装,详情请见

  • 【记录】Cython出现error:Unable to find vcvarsall.bat(2)_TaiBai_435_的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值