[解决] Windows下安装Python Extension Package出现 error: Unable to find vcvarsall.bat 错误
最简单的方式
直接下载编译好的.exe文件进行安装
Unofficial Windows Binaries for Python Extension Packages
常用的包应该都能找到.
error: Unable to find vcvarsall.bat
使用pip安装Motor时, 总出现问题, 如下:
building 'greenlet' extension
error: Unable to find vcvarsall.bat
根据error: Unable to find vcvarsall.bat中的安装MinGW方法
1、我使用的是Python 2.7
2、安装MinGW到C:\MinGW
3、添加C:\MinGW\bin和C:\MinGW\lib目录到环境变量PATH
4、编辑或添加C:\Python27\Lib\distutils\distutils.cfg文件, 添加如下两行:
[build]
compiler=mingw32
我使用了virtualenv, 因此这里需要在相应目录下添加
5、重新执行pip install motor
, 报新的错误
building 'greenlet' extension
C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python27\include -ID:\LinksBox-Tornado\PC -c greenlet.c -o build\temp.win-amd64-2.7\Release\greenlet.o
cc1.exe: error: unrecognized command line option '-mno-cygwin'
error: command 'gcc' failed with exit status 1
参考Python error: Unable to find vcvarsall.bat
原因是gcc 4.6.x以后不再接受-mno-cygwin
, 为了解决这个问题需要修改C:\Python27\Lib\distutils\cygwinccompiler.py文件。找到(搜索-mno-cygwin
):
set_executables(compiler='gcc -mno-cygwin -O -Wall',
compiler_so='gcc -mno-cygwin -mdll -O -Wall',
compiler_cxx='g++ -mno-cygwin -O -Wall',
linker_exe='gcc -mno-cygwin',
linker_so='%s -mno-cygwin %s %s'
% (self.linker_dll, shared_option,
entry_point))
修改为:
set_executables(compiler='gcc -O -Wall',
compiler_so='gcc -mdll -O -Wall',
compiler_cxx='g++ -mno-cygwin -O -Wall',
linker_exe='gcc',
linker_so='%s -mno-cygwin %s %s'
% (self.linker_dll, shared_option,
entry_point))
接着还是出现问题了...
囧
所以, 真正的解决方法是...
到pypi greenlet上去下载greenlet-0.4.1.win-amd64-py2.7.exe直接安装
然后将C:\Python27\Lib\site-packages目录下的greenlet.pyd和greenlet-0.4.1-py2.7.egg-info两个文件拷贝到我的virtualenv目录的X:\virtualenvDir\Lib\site-packages下才解决了问题