当前位置: 移动技术网 > IT编程>脚本编程>Python > windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)

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

2019年06月18日  | 移动技术网IT编程  | 我要评论

功夫树蛙打自卫拳,中国保健食品网,东门太阳百货

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 来说,微软还算有良心,直接推出了,下载直接安装即可。然后,在开始菜单-》所有程序里面,找到对应的目录,根据的你的平台和python版本(选x86或x64)点击对应的command prompt运行。 这个cmd窗口里面,可以输入set命令查看一下环境变量,发现,已经设置好了include=, path=, lib=, and libpath=这几个参数,于是直接输入

pip install numpy

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

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

       

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

        

       

     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\目录下即可,可在下面的这篇百度文库里下载:

  

    安装完毕之后,在开始菜单里面,找到“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)提供的大量已编译打包好的针对,上面有numpy、scipy、matplotlib等等数值分析、科学计算的模块库,并且还都是  版的。下载对应的版本,直接用“pip install xxxx.whl”即可完成安装,whl文件其实就跟zip文件一样,打包压缩一下而已,你也直接用压缩软件解开,将其放到对应的lib/site-packages目录下即可。of course,你也可以使用  这样的python定制环境版本,里面已将上面的包直接集成了,包括像ipython这么好用的repl工具,以及conda 包管理。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网