官方不建议使用 64 bit python,容易出各种问题

Unable to find vcvarsall.bat

凡是安装与操作系统底层相关的 python 扩展都会遇到这个问题,如 PIL,Pillow,gevent 等,当然你可以直接安装编译好的,此时可能无需解决这个问题,但是你只能使用阉割版的功能

这个问题的原因大致如下:有些 python 扩展需要编译,而编译需要 visual C++,而你的电脑没有安装

这个问题有几种解决方案...

参考下面链接

亲测方法

安装 visual studio 后,在环境变量里会自动生成对应版本的配置

如果装的是VS ,是看不到出现环境变量的

对于vcvarsall.bat的探测,VS2017以前的版本,可以通过VSXXXCOMNTOOLS环境变量来发现,例如:VS140COMNTOOLS对应 VS2015
但是VS2017之后就没这个环境变量了,因此更加通用可靠的探测方式,是从注册表中查找。
例如,VS2017的注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\SxS\VS7;15.0)\VC\Auxiliary\Build
VS2017之前版本路径如下:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\SxS\VS7;14.0)\VC
64bits版本,Microsoft之前再加个Wow6432Node。

然后执行如下命令

Visual Studio  (VS9):  SET VS90COMNTOOLS=%VS90COMNTOOLS%
Visual Studio (VS10): SET VS90COMNTOOLS=%VS100COMNTOOLS%
Visual Studio (VS11): SET VS90COMNTOOLS=%VS110COMNTOOLS%
Visual Studio (VS12): SET VS90COMNTOOLS=%VS120COMNTOOLS%
Visual Studio (VS14): SET VS90COMNTOOLS=%VS140COMNTOOLS%

注意这个命令不是永久生效,只是临时命令,每次打开命令行都要执行一次

另外,有个简单方法 

python2 提供了对应的 vc:https://www.microsoft.com/en-us/download/details.aspx?id=44266  Microsoft Visual C++ Compiler for Python 2.7

python3 没有提供

https://www.cnblogs.com/yyds/p/7065637.html  写的很透彻

https://blog.csdn.net/sunlilan/article/details/80040858  很有用的教程

https://my.oschina.net/soarwilldo/blog/496463

https://blog.csdn.net/u011275279/article/details/73238609

https://blog.csdn.net/m0_37638031/article/details/78763956  visual studio 2015安装教程

RuntimeError: Broken toolchain: cannot link a simple C program

https://www.jianshu.com/p/7dc989dc55f0

https://www.tuicool.com/articles/JzI3Uj

windows 安装 python 踩坑记录的更多相关文章

  1. CentOS7.4安装MySQL踩坑记录

    CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...

  2. ubuntu 下安装docker 踩坑记录

    ubuntu 下安装docker 踩坑记录 # Setp : 移除旧版本Docker sudo apt-get remove docker docker-engine docker.io # Step ...

  3. windows安装rabbitmq踩坑实录

    最近学习springcloud消息总线需要用到rabbitmq,然后安装的时候踩了一些坑,记录如下: 首先安装rabbitmq之前需要先安装erlang,因为rabbitmq服务端使用erlang写的 ...

  4. 【学习笔记】windows安装jhipster踏坑记录

    序: 入职新公司第二天了,本来第一天是配置环境来着,配了一下午也没搞成那个jhipster的安装,每次以为应该正常的时候都是不对,yo是yeoman的指令,但是我是使用yarn管理的yeoman 纠结 ...

  5. 虚拟机安装mysql踩坑记录

    本章节主要讲解的是在虚拟机centOs7版本以上安装mysql5.6版本,亲测可以直接使用,有需要帮助的小伙伴可以加本人QQ2246451792@qq.com!!!! 卸载centOs7自带的mari ...

  6. python踩坑记录篇,持续更新

    问题1:python语法错误 错误日志如下: print(a[2])    ^IndentationError: unexpected indent [解决方案]:缩进代码错误导致,将print的缩进 ...

  7. Android关于版本更新下载安装之踩坑记录(针对7.0以上)

    最近刚刚把古老的项目targetSdk版本升级到26,升级之前是19(非常非常古老了).那么升级后一些问题开始出现. Android 8.0 (Android O)为了针对一些流氓软件引导用户安装其他 ...

  8. python发布包到pypi的踩坑记录

    前言 突然想玩玩python了^_^ 这篇博文记录了我打算发布包到pypi的踩坑经历.python更新太快了,甚至连这种发布上传机制都在不断的更新,这导致网上的一些关于python发布上传到pypi的 ...

  9. 使用Windows下的git工具往github上传代码 踩坑记录

    使用Windows下的git工具往github上传代码 踩坑记录 背景 由于以前接触的项目都是通过svn进行版本控制,现在公司项目使用git,加上自己平时有一个练手小项目,趁着周末试着把项目上传到自己 ...

随机推荐

  1. Java基础__ToString()方法

    Java toString() 方法 (一).方便println()方法的输出 public class TString { private String name; public TString(S ...

  2. [BZOJ1123]:[POI2008]BLO(塔尖)

    题目传送门 题目描述 Byteotia城市有n个towns.m条双向roads.每条road连接两个不同的towns,没有重复的road.所有towns连通. 输入格式 输入n,m及m条边. 输出格式 ...

  3. 8.3 CSS样式

    8.3 CSS样式 参考链接:http://how2j.cn/k/css2/css2-border/249.html 一.CSS有什么作用. 不使用css 给每一个单元格加上背景颜色 .就需要给每一个 ...

  4. JS中的原型链和原型的认识

    这篇文章主要是学习一下JavaScript中的难点------原型和原型链 自定义一个对象 我们学习一门编程语言,必然要使用它完成一些特定的功能,而面向对象的语言因为符合人类的认知规律,在这方面做得很 ...

  5. spring boot配置redis

  6. Node fs 创建多层文件夹

    一.dirname()方法 1. 获得路径当中最后一段文件或文件夹所在的路径.多次调用path.dirname将会逐层返回上级目录 var path=require("path") ...

  7. tensorflow卷积神经网络与手写字识别

    1.知识点 """ 基础知识: 1.神经网络(neural networks)的基本组成包括输入层.隐藏层.输出层.而卷积神经网络的特点在于隐藏层分为卷积层和池化层(po ...

  8. WPF 键盘全局接收消息

    1.========================================================================== 在c#中怎样禁用鼠标左键的使用,其实我们可以通 ...

  9. 小D课堂 - 零基础入门SpringBoot2.X到实战_第11节 Logback日志框架介绍和SpringBoot整合实战_45、SpringBoot2.x日志讲解和Logback配置实战

    笔记 2.SpringBoot2.x日志讲解和自定义Logback配置实战     简介:讲解SpringBoot2.x整合Logback配置实战 1.官网介绍:https://docs.spring ...

  10. hibernate之inverse=true相关配置讲解

      首先inverse=”true”是在双向关联里面使用单向关联没有这个配置 inverse – 标记由哪一方来维护关联关系(双向关联中会用到) inverse默认值为false 如果inverse设 ...