什么是vcvarsall.bat,为什么需要它?
Python通过安装第三方包实现更多的功能。这些包中包含扩展模块(extension),有时也叫本地模块(native modules)。它们以.pyd结尾,包含针对平台的代码,可能由其他语言编写的,所以需要vcvarsall.bat编译这些模块。vcvarsall.bat是visual studio的一个编译器。
也可以下载wheel,wheel中是已经被编译过的模块。且pip优先下载wheel文件。
如果我需要的包没有wheel咋办?
基本上pythonwheels.com上的包已经很全了。但还是有可能出现这种情况。
你首先应该向项目的issue tracker报告。
如果他不愿意自己放出wheel,你可以使用Anaconda或Python(x,y)这些发行版,它们有很多的包。
但是如果你只需要一个包,很值得看看http://www.lfd.uci.edu/~gohlke/pythonlibs/,这里有许多非官方的wheel。
如果都不成功,你就需要考虑自己建立编译环境了。首先要选编译工具的版本。
Python Version | You will need |
3.5 and later | |
3.3 and 3.4 | Windows SDK for Windows 7 and .NET 4.0 (Alternatively, Visual Studio 2010 if you have access to it) |
2.6 to 3.2 |
对于python3.5,安装VS2015再pip就可以了。Python3.5会自动更新编译器。对于python2.6到3.2,编译器包(虽然名字叫python2.7,但其实对这些版本都有效)会被setuptools检测到,也是只需要pip就可以了。但如果你用的python3.3或3.4会更加麻烦。。。。
如果你要在多个机器上安装这个包,强烈建议pip wheel (package name)。但这种方法也有弊端,许许多多的包仍有其他的依赖。
痛苦何时停止?
python包的问题是业界最复杂的问题之一。版本(versioning)很困难,依赖解析(dependency resolution)很困难,ABI兼容性(不懂啥意思)很困难,secure hosting(同样不懂)很困难,软件信任(software trust)很困难。相关人员仍在努力解决这些问题,我们能做的就是及时反馈,感激项目维护者。