Windows 7下SCons无法检测Visual Studio 2017构建工具问题
这个错误的核心原因很明确:platform/windows\detect.py里的os.getenv("WindowsSdkDir")返回了None,当它尝试和字符串"/Include"拼接时,就触发了TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'。而这背后是Visual Studio的编译环境变量没有被正确加载,导致SCons既找不到VS编译器,也获取不到Windows SDK的路径。
下面是一步步的解决办法:
使用正确的VS命令提示符
不要用普通的命令提示符,一定要打开对应32位的Visual Studio工具命令行,比如“Visual Studio 20xx x86 Native Tools Command Prompt”(具体名称取决于你安装的Build Tools版本)。这个专用提示符会自动加载VS编译器和Windows SDK的所有必要环境变量,是编译Godot的前提。手动设置WindowsSdkDir环境变量(如果专用提示符也没加载)
如果你打开专用提示符后还是报错,先手动确认Windows SDK的安装路径。对于32位Windows 7,常用的是Windows SDK 7.1,默认路径是C:\Program Files\Microsoft SDKs\Windows\v7.1\。在命令提示符里执行:set WindowsSdkDir=C:\Program Files\Microsoft SDKs\Windows\v7.1\设置完成后再重新运行你的SCons编译命令:
C:/python27/scons.bat p=windows验证VS编译器是否可用
在命令提示符里输入cl,如果能看到类似Microsoft (R) C/C++ Optimizing Compiler Version xx.x for x86的输出,说明编译器环境已经正确加载;如果提示“'cl' 不是内部或外部命令”,那你需要重新安装/修复Visual C++ Build Tools,确保安装时勾选了C++编译工具链和对应的Windows SDK 7.1(针对Win7)。检查SCons与Python的兼容性
你用的是Python 2.7,要注意SCons的版本:SCons 4.0及以上不再支持Python 2.7,而Godot的旧版本(比如3.x系列)通常需要搭配SCons 3.x版本。如果你的SCons版本太高,也可能导致环境检测异常,建议安装Godot官方文档推荐的对应SCons版本。
内容的提问来源于stack exchange,提问作者user8314960

