侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)

Windows  /  管理员 发布于 5年前   334

N久没有开始写博客了,总觉得要随便记点东西,岁月蹉跎,曾经搞得一些东西、技术、工具,说丢也就丢了,点点滴滴还是要记录一下吧。。。

   在windows下使用pip安装一些python的第三方库,有很多使用C写了一些扩展,需要使用VC++ Compiler 来编译安装(也可使用MInGW,一般不推荐),否则就会出现“Unable to find vcvarsall.bat”。像Python2.7就需要使用VS2008 C++ compiler , 而python3至python3.4 (python3.5 将采用VS2015)采用VS2010 编译生成。但是,凡安装过VS这个巨无霸的臃肿IDE的都知道,附带捆绑一大堆你不知道有没有用的Microsoft 的插件,占据大量的C盘空间,启动又慢,虽然IDE的界面功能勉强过得去。如果电脑配置一般的话,这东西就搞得N个卡,一般不做相关开发的,就没必要去安装整个VS。 对于Python 2.7 来说,微软还算有良心,直接推出了Microsoft Visual C++ Compiler for Python 2.7,下载直接安装即可。然后,在开始菜单-》所有程序里面,找到对应的目录,根据的你的平台和python版本(选x86或x64)点击对应的Command Prompt运行。 这个cmd窗口里面,可以输入set命令查看一下环境变量,发现,已经设置好了INCLUDE=, PATH=, LIB=, and LIBPATH=这几个参数,于是直接输入

pip install numpy

就可安装编译对应的第三方模块、库了,有时编译过程比较漫长, 需耐心等待。

    而对python3 来说, 则没有这么方便了,由于我的Python3.4 是64位,显然直接用VS2010 Express也不行了,因为它默认只有x86版本的,没有64位的。参考一下Stackoverflow中一篇问答:

       Python PIP has issues with path for MS Visual Studio 2010 Express for 64-bit install on Windows 7

    根据上面提出的建议,我在本机上得到对应解决方案。先安装VS2010 Express ,然后再安装windows SDK 7.1  ,最后也要安装一个64位compiler的补丁;

       Microsoft SDK 7.1 (Windows 7) 

       VC-Compiler-KB2519277

     PS:在安装SDK 7.1 之前,请先卸载 VC redistribute 2010 相关(包括X86 和 X64)组件包,否则安装报错。

    完成上述步骤之后,基本的MSVC的编译环境(包含x64)就已经配置好了,但是如果你在以后编译项目的时候,比如在构建Qt5项目时,会出现出现以下错误:

     c:\program files (x86)\microsoft visual studio 10.0\vc\include\intrin.h(26): fatal error C1083: Cannot open include file: 'ammintrin.h': No such file or directory

    此时则可以到网上下载对应 ammintrin.h ,放到 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\目录下即可,可在下面的这篇百度文库里下载:

  ammintrin.h头文件,Windows SDK 7.1安装KB2519277补丁后必备

    安装完毕之后,在开始菜单里面,找到“Windows SDK 7.1 Command Prompt”, 点击运行,在shell下可以通过SetEnv 来设置对应的编译环境,如下图:

设置“setenv /x64” 之后,即可在64位编译环境下pip install 对应的包。

到了这里,可能需要提一下,搭建好环境后,分别在python 2.7 和 python 3.4 里面安装numpy,发现py2没问题,py3却安装编译link失败(之前都在虚拟机里面测试了一下,py3安装是没问题的),这是为何呢? 请对比一下下面两幅图:

显然py2安装的时候,link命令行下的libpath使用“”引起来了,所以路径有空格不会把参数隔断,而py3就没这么细致了,不知道是pip、setuptools调用cmd命令的缺心眼,还是distutils里面的bug,反正py3的安装路径不能有空格。于是调整了一下python3的安装路径,也就是不含空格,就编译成功了。

  当然这只是搭建好了VC++ 的编译环境,对于像SciPy这样的数值计算库,安装的话需要Fortran的编译器。显然windows下的编译安装远没有linux下的简单方便(除了包名不好记,包依赖比较麻烦),gcc、gfortran现成的,apt-get 里面也有现成的。 所以在windows下开发测试的话,可以直接在这个加州大学尔湾分校(UCI)提供的大量已编译打包好的针对windows的wheel安装包,上面有Numpy、SciPy、matplotlib等等数值分析、科学计算的模块库,并且还都是 MKL 版的。下载对应的版本,直接用“pip install xxxx.whl”即可完成安装,whl文件其实就跟zip文件一样,打包压缩一下而已,你也直接用压缩软件解开,将其放到对应的Lib/site-packages目录下即可。Of course,你也可以使用 Anaconda 这样的python定制环境版本,里面已将上面的包直接集成了,包括像IPython这么好用的REPL工具,以及conda 包管理。


  • 上一条:
    代码讲解Python对Windows服务进行监控
    下一条:
    Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Windows 10的告别:2025年10月14日,一段时代的终结(0个评论)
    • windows 11激活_Win11 KMS激活流程步骤(1个评论)
    • 安装Windows 11系统的注意了,看看你的cpu是否在微软兼容列表排除中(1个评论)
    • 微软将于2022年9月20日推送Windows11 22H2新版本,推测2024发布windows 12(0个评论)
    • windows11系统中可以关闭禁止的服务及介绍(1个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2018-01
    • 2018-06
    • 2020-06
    • 2021-06
    • 2021-07
    • 2022-01
    • 2022-04
    • 2022-08
    • 2023-08
    • 2023-10
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客