Python安装Scrapy的种种

这几天没什么事,决定把自己抓代理的小工具用scrapy改写。
然而安装的时候却出现以下问题,反复失败:

Unable to find vcvarsall.bat

经过一番查找,找到了这个文件:
\Lib\distutils\_msvccompiler.py

【Python安装Scrapy的种种】它里边长这样:
def _find_vcvarsall(plat_spec): try: key = winreg.OpenKeyEx( winreg.HKEY_LOCAL_MACHINE, r"Software\Microsoft\VisualStudio\SxS\VC7", access=winreg.KEY_READ | winreg.KEY_WOW64_32KEY ) except OSError: log.debug("Visual C++ is not registered") return None, None ...

根据代码理解,这是到注册表里找值去了。
在注册表里按这个路径点下去,长这样:

Python安装Scrapy的种种
文章图片
Paste_Image.png
SxS下边没有VC7这个目录。
但是去调试这个_msvccompiler.py文件,这段代码却能读出一些值来。

Python安装Scrapy的种种
文章图片
Paste_Image.png
再按这个值去注册表里检索,找到这些值的路径,原来是这样:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7

Python安装Scrapy的种种
文章图片
Paste_Image.png
Wow6432Node: win64系统中,32位程序的注册表值会被写到这里。
根据msvccompiler.py的代码,名字>=14的值会被当作vcvarsall.bat所在的目录,于是跑到C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC下去一看,VS2015什么时候被卸掉了[汗]。
公司的电脑不想再折腾了,回家再搞吧。

    推荐阅读