在Windows 8.1、7 Enterprise和7 Home Edition下进行numpy安装期间,pip出现编译器问题 [英] Compiler problems with pip during numpy install under Windows 8.1, 7 Enterprise and 7 Home Editions
问题描述
由于各种错误,我无法在运行Python 3.4的计算机上通过pip install numpy来安装numpy,我收到与编译问题相关的链接(这仅适用于Python的64位安装).
I am unable to install numpy via pip install numpy on my computer running Python 3.4 due to various errors I receive linked to compilation issues (This is only the case on a 64-bit installation of Python).
This is a problem that has been reported extensively and I had a related question about unable to find vcvarsall.bat. I have tested this on three different clean machines running Windows 8.1, 7 Enterprise and 7 Home Editions and it always comes up.
安装Visual Studio 2010 Express C ++会消除链接中的第一个错误-即找不到vcvarsall.bat,但抛出下一个以ValueError结尾的异常,如下所示:
Installing Visual Studio 2010 Express C++ gets rid of the first error in the link - i.e. Unable to find vcvarsall.bat but throws out a next exception ending with a ValueError as here:
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错误.
I have then followed this advice and patched the file as linked in the discussion forum which resulted in a KEY_BASE error.
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
的以下定义:
Following the advice in the same link, I have added the following definition of KEY_BASE
before the variable gets called in msvc9compiler.py:
KEY_BASE = r"Software\Microsoft\\"
导致最终错误的原因是我无法解决:
Which results in the final error I was not able to troubleshoot:
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
错误:
I have tried the following but none of it resolved the Broken toolchain
error:
- 此链接,其中包括msvc9compiler.py的进一步补丁
- Peter Cock的链接(此帮助进行Python3.4的32位安装)
- 尝试使用
easy_install
进行安装,因为一些用户建议这样做可能会起作用
- This link that includes a further patch to msvc9compiler.py
- This link by Peter Cock (This helps on the 32-bit install of Python3.4)
- Tried installing using
easy_install
as some users suggested it might work that way
注意1:我知道在网站如果有的话,我特别在寻找使用distutils的解决方案. 注意2:错误日志明显更大,为了便于阅读,我将其剪切.
NOTE 1: I am aware of the workaround using the compiled binaries on this website I am specifically looking for solution using distutils if there is one. NOTE 2: The error logs are obviously larger and I cut them for readability.
推荐答案
我能够在Windows 7 Professional(64位)中重现所有这些错误.
I was able to reproduce all these errors in Windows 7 Professional (64 bit).
您的最终问题(破碎的工具链)是由更多与清单相关的问题引起的.我可以通过更改以下行(在msvc9compiler.py中)来解决此问题:
Your final issue (Broken toolchain) is caused by more manifest related issues. I was able to work around this by changing the following line (in msvc9compiler.py):
mfinfo = self.manifest_get_embed_info(target_desc, ld_args)
到
mfinfo = None
因此绕过紧随其后的if语句.更改之后,numpy为我成功编译了.
thus bypassing the if statement which immediately follows. After this change numpy successfully compiled for me.
这篇关于在Windows 8.1、7 Enterprise和7 Home Edition下进行numpy安装期间,pip出现编译器问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!