这是一个广泛报道的问题,我曾经有一个关于找不到vcvarsall.bat的相关问题。我在三台不同的干净机器上测试了这个问题,它们分别运行Windows 8.1、7企业版和7家庭版,但问题始终存在。
通过安装Visual Studio 2010 Express C++,可以消除链接中的第一个错误,即Unable to find vcvarsall.bat,但会抛出一个以ValueError结尾的下一个异常,如此处所示:
File "C:\Python34\lib\distutils\msvc9compiler.py", line 371, in initialize
vc_env = query_vcvarsall(VERSION, plat_spec)
File "C:\Python34\lib\distutils\msvc9compiler.py", line 287, in query_vcvarsall
raise ValueError(str(list(result.keys())))
ValueError: ['path']
我随后遵循了这个建议,并按照讨论论坛中提供的链接修补了文件,导致出现了KEY_BASE错误。
File "C:\Users\Matej\AppData\Local\Temp\pip_build_Matej\numpy\numpy\distutils\command\config.py", line 18, in <module>
from numpy.distutils.mingw32ccompiler import generate_manifest
File "C:\Users\Matej\AppData\Local\Temp\pip_build_Matej\numpy\numpy\distutils\mingw32ccompiler.py", line 36, in <module>
from distutils.msvccompiler import get_build_version as get_build_msvc_version
File "C:\Python34\lib\distutils\msvccompiler.py", line 638, in <module>
from distutils.msvc9compiler import MSVCCompiler
File "C:\Python34\lib\distutils\msvc9compiler.py", line 71, in <module>
r"v%sA"
File "C:\Python34\lib\distutils\msvc9compiler.py", line 67, in <listcomp>
WINSDK_PATH_KEYS = [KEY_BASE + "Microsoft SDKs\\Windows\\" + rest for rest in (
NameError: name 'KEY_BASE' is not defined
按照同一个链接中的建议,我在 msvc9compiler.py 文件中调用该变量之前添加了以下 KEY_BASE
的定义:
KEY_BASE = r"Software\Microsoft\\"
这导致了最终错误,我无法进行故障排除:
File "C:\Users\Matej\AppData\Local\Temp\pip_build_Matej\numpy\numpy\distutils\command\build_src.py", line 164, in build_sources
self.build_library_sources(*libname_info)
File "C:\Users\Matej\AppData\Local\Temp\pip_build_Matej\numpy\numpy\distutils\command\build_src.py", line 299, in build_library_sources
sources = self.generate_sources(sources, (lib_name, build_info))
File "C:\Users\Matej\AppData\Local\Temp\pip_build_Matej\numpy\numpy\distutils\command\build_src.py", line 386, in generate_sources
source = func(extension, build_dir)
File "numpy\core\setup.py", line 682, in get_mathlib_info
raise RuntimeError("Broken toolchain: cannot link a simple C program")
RuntimeError: Broken toolchain: cannot link a simple C program
我尝试了以下方法,但是都没有解决Broken toolchain
错误:
- 这个链接包含了一个msvc9compiler.py的进一步修补程序
- Peter Cock的链接(该链接可帮助在Python3.4 32位安装中使用)
- 按照一些用户的建议尝试使用
easy_install
进行安装
注意1:我知道可以使用此网站上的编译好的二进制文件来绕过问题,但我特别寻求使用distutils的解决方案。 注意2:错误日志很长,我为了易读性而截断了。