官方不建议使用 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. Python使用otp实现二步验证

    https://www.cnblogs.com/lori/p/11077161.html https://blog.coding.net/blog/two-factor-authentication ...

  2. 使用Jmeter对观影券查询接口做性能测试

    线程数:虚拟用户数.一个虚拟用户占用一个进程或线程.设置多少虚拟用户数在这里也就是设置多少个线程数. 准备时长: 设置的虚拟用户数需要多长时间全部启动.如果线程数为20 ,准备时长为10 ,那么需要1 ...

  3. docker基础知识普及(一)

    背景 这篇内容是之前给部门同事培训时写的文档,旨在传达一些docker相关概念,有个基本印象,当然,以下内容都来自网络,我只是个搬运工.具体操作在下篇文章中 一.什么是docker? 1. Docke ...

  4. ArrayList && HashMap扩容策略

    ArrayList扩容策略:默认10 扩容时是base + base/2, 即10 15 22 33 49...扩容时不安全:grow方法扩容时,赋值 elementData = Arrays.cop ...

  5. vue 默认展开详情页

    { path: '/Tree', component: Tree, children: [ { path: '/', component: Come } ] }

  6. LoaderDialog自定义加载框的实现

    package com.loaderman.loadingdialogdemo; import android.app.Dialog; import android.content.Context; ...

  7. Monkeyrunner 使用说明

    monkeyrunner为android系统新公开的一个测试工具.有助于开发人员通过脚本部署较大规模的自动化测试. Monkeyrunner       本文档中包含 一个简单的monkeyrunne ...

  8. js判断字符串是否为JSON格式

    不能简单地使用来判断字符串是否是JSON格式: function isJSON(str) { if (typeof str == 'string') { try { JSON.parse(str); ...

  9. docker commit命令

    docker commit命令用于基于一个容器来创建一个新的docker镜像. docker commit制作的镜像,除了制定镜像的人知道执行过什么命令,怎么生成的镜像,别人根本无从得知.建议使用的是 ...

  10. java数据结构之ArrayList

    一.ArrayList源码注释 /** * ArrayList源码分析,jdk版本为1.8.0_121 */ public class ArrayList<E> extends Abstr ...