• 错误 Unable to find vcvarsall.bat 的终极无敌最完美的解决办法


    Windows 上通过 pip 安装 python 包,经常会出现这种错误。

    如:pip install pyodbc。

    这种错误的简单明了解释就是:python 编译器找不到计算机上面的 VC 编译器。

    解决办法网上也是千奇百怪,我也是数次遇到这个问题,但是一直都没记录,每次都是花费N多时间来解决,今天就记录下解决办法。

    首先出问题的开发环境:

    python: Python 3.4

    计算机: windows 8 or windows 10 or windows server 2012 (都为64位)

    首先说下这个错误的根本原因:计算机上没有安装 visual studio c++。

    而 visual studio c++ 的版本和 python 的版本又有很多,所以网上有很多针对性的解决办法,但是并不能解决自己的问题。

    ----------------------------------------------------------------------------

    那么 可以不可以不安装 visual studio c++ 呢,因为太麻烦了!

    可以的,所以最完美的解决 办法是下载 相应包的 .wsl 文件,本地安装。

    比如 Pyodbc,再这里下载对应版本的 .wsl 文件:https://pypi.python.org/pypi/pyodbc/4.0.21

    把下载下来的的 .wsl 文件放在C盘下,再使用 pip 安装:pip install XXX.wsl 

    如果可以安装 wsl 的文件呢,因为这种类型的安装包是编译好的,所以不需要  VC ++ 来再次编译的!

    这种方法是最完美 的,如果按照这种方法安装成功了,就 没必须再继续读这篇文章了!

    ----------------------------------------------------------------------------

    首先解决核心是安装 visual studio c++,而安装 visual studio c++的途径又有2种,可以自己选一种:

    • 安装 visual studio 2015 或 visual studio 的其他版本。这种方法优点是简单暴力,缺点是需要安装太多无关东西了。
    • 安装 相应的  visual studio c++ 独立包。优点是安装到电脑上的东西少,缺点是可能需要针对计算机的版本来下载对应的独立安装程序。

    下面介绍下2个 visual studio c++ 独立包:

    • 如果电脑操作系统是 windows 8 or windows 10 or windows server 2012 (都为64位)中的一种,安装 windows 8 SDK:https://developer.microsoft.com/en-us/windows/downloads/windows-8-1-sdk
    • 如果操作系统是 win7 或者更老的,则可以选择安装 windows 7 SDK:https://blogs.msdn.microsoft.com/pythonengineering/2016/04/11/unable-to-find-vcvarsall-bat/

    ------------------------------------------------------------------

    好,如果你阅读到这里,相信已经安装上了 visual c++。

    之后就是要让 python 的编译器找到 visual c++ 的位置,这里也有2种方法,可以任选一种:

    • set SET VS100COMNTOOLS=%VS140COMNTOOLS% ,注意这个命令是再 pip install XXX 前面执行的,执行完后关闭cmd,再执行 pip install XXX(或者不用关闭cmd?记不太清楚了)

    • 修改MSVCCompiler函数:vc_env = query_vcvarsall(VERSION, plat_spec) 为 vc_env = query_vcvarsall(14.0, plat_spec),再执行 pip install XXX

    14.0 为 vc++ 的版本号:

    Visual Studio 2010 (VS10):SET VS100COMNTOOLS=%VS100COMNTOOLS%
    Visual Studio 2012 (VS11):SET VS100COMNTOOLS=%VS110COMNTOOLS%
    Visual Studio 2013 (VS12):SET VS100COMNTOOLS=%VS120COMNTOOLS%
    Visual Studio 2015 (VS15):SET VS100COMNTOOLS=%VS140COMNTOOLS%

    ------------------------------------------------

    要是还没有解决?请不要在文章下面留言(感谢解决问题的可以留言),因为每个人都 计算器系统和python 版本不同,32位又或者是64位,都不同,不过可以给你建议看看这几个:

    https://github.com/mkleehammer/pyodbc/issues/77

    https://stackoverflow.com/questions/28251314/error-microsoft-visual-c-10-0-is-required-unable-to-find-vcvarsall-bat

    https://www.zhihu.com/question/26857761

    祝你顺利。

  • 相关阅读:
    A.3.1. 与MySQL客户端库的链接问题
    c++ mysqlclient library linkage problem Stack Overflow
    找房 爱合住, ihezhu.com
    21.4.5.1. MySQL Connector/C++ Connecting to MySQL
    如何对链接了mysqlclient的程序静态编译?
    分享:[组图] 科技圈最具权势 25 大女工程师
    linux 静态链接 mysql glibc 库的悲催过程 mango的日志 网易博客
    /usr/bin/ld: cannot find lgcc_s 问题解决小记
    « 静态编译的MySQL易挂起 »
    SQL C++代码自动生成器(sql2class)介绍 Newzai的专栏 博客频道 CSDN.NET
  • 原文地址:https://www.cnblogs.com/xunziji/p/7785021.html
Copyright © 2020-2023  润新知