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

祝你顺利。

错误 Unable to find vcvarsall.bat 的终极无敌最完美的解决办法的更多相关文章

  1. python安装大型包时出现错误Unable to find vcvarsall.bat

    在windows平台上,据说是安装cpython编写的包时会出现Unable to find vcvarsall.bat这种错误,缺失编译C的环境或组件吧,所以这个包就安装不成功,这个时候简单的方法就 ...

  2. pip install mysql-python报错1. Unable to find vcvarsall.bat 2 fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory 3.error: command 'mt.exe' failed with exit statu

    最近在安装mysql -python 时报错折腾了半天,通过以下方法解决: 1. pip install mysql-python报错 Unable to find vcvarsall.bat (参考 ...

  3. python---解决“Unable to find vcvarsall.bat”错误

    安装某些module时发生常见的 Unable to find vcvarsall.bat 错误 在eddsn找到了“Unable to find vcvarsall.bat” error when ...

  4. python Unable to find vcvarsall.bat 错误

    今天遇到了这个方面的问题,目前找到两种办法.一种是换编译器如mingw,另一种是装vc.第一种方法没成功,现在正在等第二种. 第一种: 首先安装MinGW: 把MinGW的路径添加到环境变量path中 ...

  5. python easy_install 发生Unable to find vcvarsall.bat错误的处理方法

    用python安装mmseg分词包时发生了 Unable to find vcvarsall.bat 错误 Searching for mmseg Reading http://pypi.python ...

  6. Windows 下安装Python包(Numpy)的错误:Unable to find vcvarsall.bat

    情景简介: Windows 环境下安装Python2.7的Numpy扩展包时提示:error: Unable to find vcvarsall.bat 经过不懈的Google/Bing,发现不仅安装 ...

  7. 解决 Windows 编译 Fast R-CNN 的 bbox 和 nms 出现的错误 error: Unable to find vcvarsall.bat

    在 Windows 下安装一个底层的 Python 包时(Fast R-CNN 的 bbox 和 nms),遇到 error: Unable to find vcvarsall.bat 错误,看到这个 ...

  8. 问题:python2.7 安装包失败,提示错误:Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat)

    问题描述: 使用pip安装包时报错,error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat) 环境: pyt ...

  9. 解决win764位安装pycrypto遇到unable to find vcvarsall.bat 问题

    今天安装pycrypto的库.安装中遇到一些问题,这里简单记录下来. 首先安装python,pycrypto是基于python的一个库. 第一种:搜索关键字pycrypto,找到pycrypto的官方 ...

随机推荐

  1. C语言 · 筛选号码

    算法训练 筛选号码   时间限制:1.0s   内存限制:512.0MB      问题描述 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3报数),凡报到3的人退出圈子.从下 ...

  2. Redis提供的持久化机制(一)

    Redis提供的持久化机制 redis是一个内存数据库,也就是说它的所有的数据都是保存在内存中的,而内存中的数据当程序结束时就会消失,所以我们要想办法把内存中的数据写到磁盘中.当程序异常退出或者正常退 ...

  3. PostgreSql 函数

    DECLARE curParkingTime TIMESTAMP ; curLeavingTime TIMESTAMP; parkingSpaceIndexCode VARCHAR[]; days I ...

  4. uboot下emmc内容烧写(拷贝)步骤

    一.目的:嵌入式开发板,通过emmc上的内核文件加载启动linux操作系统,以及存放其他程序文件.需要将所需文件先写入emmc中. 二.总体步骤是:uboot启动后,进入linux下,将emmc分区并 ...

  5. 将html转换为Drupal模板文件的一般步骤

    本篇文章以自定义page.tpl.php文件为例,介绍在Drupal主题开发工作中,将html文件转换为tpl模板文件的一般步骤. 仅保留html文件中body标记之间的内容(不含body标记),其他 ...

  6. 【oneday_onepage】——How to stretch the life of your SSD storage

    How to stretch the life of your SSD storage July 18, 2013, 9:06 PM — Once a PC enthusiast's dream st ...

  7. CENTOS6.5安装CDH5.12.1(一) https://mp.weixin.qq.com/s/AP_m0QqKgzEUfjf0PQCX-w

    CENTOS6.5安装CDH5.12.1(一) 原创: Fayson Hadoop实操 2017-09-13 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看. 1.概述   本文档主要描 ...

  8. Matlab——plot polyfit polyval

    p=polyfit(x,y,m) 其中, x, y为已知数据点向量, 分别表示横,纵坐标, m为拟合多项式的次数, 结果返回m次拟合多项式系数, 从高次到低次存放在向量p中. y0=polyval(p ...

  9. Qt判断操作系统代码

    Qt4的时候是如下宏定义.Qt5,有所不同.   #include <QtGlobal> ... #ifdef Q_OS_MAC // mac #endif #ifdef Q_OS_LIN ...

  10. Java注释规范整理

    Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00018736 在软件开发的过程中总是强调注释的规范,但 ...