这几天没什么事,决定把自己抓代理的小工具用scrapy改写。
然而安装的时候却出现以下问题,反复失败:
Unable to find vcvarsall.bat
经过一番查找,找到了这个文件:
\Lib\distutils\_msvccompiler.py
它里边长这样:
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
...
根据代码理解,这是到注册表里找值去了。
在注册表里按这个路径点下去,长这样:
SxS下边没有VC7这个目录。
但是去调试这个_msvccompiler.py
文件,这段代码却能读出一些值来。
再按这个值去注册表里检索,找到这些值的路径,原来是这样:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7
Wow6432Node: win64系统中,32位程序的注册表值会被写到这里。
根据msvccompiler.py的代码,名字>=14的值会被当作vcvarsall.bat所在的目录,于是跑到C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
下去一看,VS2015什么时候被卸掉了[汗]。
公司的电脑不想再折腾了,回家再搞吧。