我们有这个代码,但它不再起作用了:
def get_vcvarsall(generator):
value = None
type = None
key_name = r'SOFTWARE\Microsoft\VisualStudio\SxS\VC7'
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, key_name)
if generator.startswith('Visual Studio 8'):
value,type = _winreg.QueryValueEx(key, '8.0')
elif generator.startswith('Visual Studio 9'):
value,type = _winreg.QueryValueEx(key, '9.0')
elif generator.startswith('Visual Studio 10'):
value,type = _winreg.QueryValueEx(key, '10.0')
else:
raise Exception('Cannot determin vcvarsall.bat location for: ' + generator)
path = value + 'vcvarsall.bat'
if not os.path.exists(path):
raise Exception("'%s' not found.")
return path
自从我从x86升级到Python 2.6 x64后,这似乎停止了工作(但我无法确定)。可能已经升级到导致问题的Win7。
答案 0 :(得分:5)
这是x64部分。
由于Visual Studio是一个32位应用程序,因此它的注册表项在32位WoW dungeon中被推入。你想看看
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7
请注意,如果您将Python作为32位可执行文件运行,它也会被重定向 - 所以一切都“正常”。只有当您从64位应用程序中查找32位信息时才会遇到问题。