由于收到与编译问题相关的各种错误,我无法在运行 Python 3.4 的计算机上通过 pip install numpy 安装 numpy(这仅适用于 64 位安装的 Python)。
这是一个已被广泛报道的问题,我有一个有关无法找到 vcvarsall.bat 的相关问题。我已经在运行 Windows 8.1、7 Enterprise 和 7 Home Editions 的三台不同的干净机器上对此进行了测试,并且它总是出现。
安装 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
按照同一链接中的建议,我KEY_BASE
在 msvc9compiler.py 中调用变量之前添加了以下定义:
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:错误日志明显更大,为了便于阅读,我将它们剪掉了。