产生原因:
python3.4用的是msvs2010编译的,所以python3.4默认只能认出msvs2010。
python2.7用的是msvs2008编译的,所以python2.7默认只能认出msvs2008.
方法一:安装mingw(不推荐)
下载mingw环境,添加环境变量
或者使用
1
|
python setup.py build –compiler=mingw32
|
方法二:安装对应版本的msvs
python2安装msvs2008,python3安装msvs2010。
方法三:设置变量
python2 在安装扩展前执行
1
|
SET VS90COMNTOOLS = [vcvarsall.bat所在的目录]
|
或者
1
|
SET VS90COMNTOOLS=%VS120COMNTOOLS%
|
在湖闻樟注:VS120COMNTOOLS改成你安装的msvs版本对应的
python3在安装扩展前执行
1
|
SET VS100COMNTOOLS = [vcvarsall.bat所在的目录]
|
或者
1
|
SET VS100COMNTOOLS=%VS120COMNTOOLS%
|
在湖闻樟注:VS120COMNTOOLS改成你安装的msvs版本对应的
方法四:修改安装脚本
打开
1
|
[python3安装目录]Lib
/distutils/msvc9compiler
.py
|
修改MSVCCompiler函数:
1
|
vc_env = query_vcvarsall(VERSION, plat_spec)
|
为:
1
|
vc_env = query_vcvarsall(12.0, plat_spec)
|
在湖闻樟注:12.0改成你安装的msvs对应的版本号
补充:
msvs2005版本号为8.0对应环境变量VS80COMNTOOLS
msvs2008版本号为9.0对应环境变量VS90COMNTOOLS
msvs2010版本号为10.0对应环境变量VS100COMNTOOLS
msvs2012版本号为11.0对应环境变量VS110COMNTOOLS
msvs2013版本号为12.0对应环境变量VS120COMNTOOLS
在Python3.5下使用pip安装numpy会出现错误
1
2
3
4
|
d:\program files\python 3.5\lib\distutils\dist.py:261: UserWarning: Unknown
distribution option:
'define_macros'
warnings.warn(msg)
error: Unable to
find
vcvarsall.bat
|
使用pip下载后执行setup.py来安装出现
1
2
3
|
building library
"npymath"
sources
No module named
'numpy.distutils._msvccompiler'
in
numpy.distutils; trying from distutils
error: Unable to
find
vcvarsall.bat
|
在湖闻樟注:
1、使用pip install -d可以下载安装包
2、这里的找不到vcvarsall.bat和python2.7、pyhton3.4下的情况有些不同,但是python3.5也存在同样的问题
在湖闻樟注:比较省事的办法是从http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv下载编译好的包来安装,这里我是自己编辑安装。这个办法安装完后,如果有其他包把该包作为依赖来编译时会出错。
步骤一:
打开
1
|
[python3安装目录]Lib
/distutils/msvc9compiler
.py
|
修改MSVCCompiler函数:
1
|
vc_env = query_vcvarsall(VERSION, plat_spec)
|
为:
1
|
vc_env = query_vcvarsall(12.0, plat_spec)
|
这里的12.0改你安装的msvs对应的版本
这一步有其他方法,出问题或者有兴趣的话可以看看python安装扩展”unable to find vcvarsall.bat“的解决办法
步骤二:
使用pip下载numpy
1
|
pip
install
-d c:\ numpy
|
步骤三:
解压后进入numpy\distutils,复制一份
msvc9compiler.py
并重命名成
_msvccompiler.py
步骤四:
进入numpy目录执行命令安装
1
|
python setup.py
install
|