Cython出现错误:Unable to find vcvarsall.bat

使用cython编译py或者pyx文件时,出现

error:Unable to find vcvarsall.bat 

1. 原因

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

但是,其对vc++的版本有要求的,具体使用哪个,见下面文件

C://Python37/Lib/distutils/msvccompiler.py

安装对应所需要的vc版本即可

当前主流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 下载

====

问题5:是否可以只安装VC,不安装VS呢?

可以,请点击这里查看详细说明。

问题6:是否有其他解决方案?

有的,其实我们的目就是在当前Windows系统上安装一个与编译当前Python时所使用的VC版本一致的编译器,而微软专门为Python提供了相应的编译器:Microsoft Visual C++ Compiler for Python 2.7,我们直接安装这个软件程序就可以了。遗憾的是,目前还没有找到Microsoft Visual C++ Compiler for Python 3.x,所以对于Python 3.x,我们还是需要安装Visual Studio 或 Visual C++。或者,抛弃Windows平台吧!

三、总结


  • 1)如果当前使用的是Python 2.7,可以安装Visual Studio 2008,也可以安装 Microsoft Visual C++ Compiler for Python 2.7来解决这个问题;
  • 2)如果当前当前使用的Python 3.x,只能通过安装相应版本的Visual Studio或Visual C++来解决这个问题。

当然网上还有一些其他的解决方案,比如修改上面提到的get_build_version()函数,在函数的开始部分给version变量重新赋值来兼容Visual Studio的高版本;再比如,通过安装MinGW并修改Python扩展包管理程序的配置文件,将编译器改为mingw等。这些方案个人不提倡使用,因为可能会带来一些其他不可预知的问题。

 

Microsoft Visual C++ Compiler for Python 2.7的下载地址在这里。

 

============另外一篇文章说明==============

对于很多python玩家来说,难免安装一些第三方的库,但是,在安装过程中,如果遇到了 error: Unable to find vcvarsall.bat。怎么办呢?网上答案千千万,楼主亲测,管用的貌似真的不多,我来分享一下我的攻坚之路(win10/python3.5)。说明下楼主情况:vs2013/vc下存在vcvarsall.bat。但是依旧报错,配置环境变量后依旧报错。

法1:网上所说的安装安装MinGW,然后在“..python安装路径...\Lib\distutils”下新建一个文件distutils.cfg,在这文件里面指定编译器为mingw32。很多人都在说这样解决,但是,貌似很多人都不推介,据说,搞定的概率很小,会报其他的错。

法2:下载安装可行版本的vs-(可行版本怎么看,请移步:..python安装路径...\Lib\distutils目录下有个msvc9compiler.py)

去下载安装VS2010(08版貌似也行,不过没必要用旧版,指不定哪个库又无法编译),给个地址(百度的云盘  国内应该速度可以)

   http://pan.baidu.com/share/link?shareid=1609273194&uk=3255422755

   然后注意这一步很重要:命令行下执行 SET VS90COMNTOOLS=%VS100COMNTOOLS%

   如果你安装的是 2012 版 SET VS90COMNTOOLS=%VS110COMNTOOLS%

   如果你安装的是 2013版 SET VS90COMNTOOLS=%VS120COMNTOOLS%

   或者更暴力,直接配置系统环境变量 VS90COMNTOOLS指向 %VS你的版本COMNTOOLS%

   你还可以更暴力,在“..python安装路径...\Lib\distutils目录下有个msvc9compiler.py找到243行  

                  toolskey = "VS%0.f0COMNTOOLS" % version   直接改为 toolskey = "VS你的版本COMNTOOLS"

法3:在系统环境变量里配置"VS%0.f0COMNTOOLS" %="VS你的版本COMNTOOLS"。跟法2原理相同。
 

你可能感兴趣的:(Python)