Я не могу установить numpy через pip install numpy на моем компьютере под управлением Python 3.4 из-за различных ошибок, которые я получаю, связанных с проблемами компиляции (это касается только 64-разрядной установки Python).
Это проблема, о которой сообщалось широко, и у меня был связанный вопрос о том, что вы не можете найти vcvarsall.bat. Я тестировал это на трех разных чистых машинах под управлением Windows 8.1, 7 Enterprise и 7 Home Editions, и он всегда появляется.
Установка Visual Studio 2010 Express С++ избавляет от первой ошибки в ссылке - т.е. не удается найти 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 (это помогает в 32-разрядной установке Python3.4)
- Пробовал установку с помощью
easy_install
, поскольку некоторые пользователи предположили, что это может сработать таким образом.
ПРИМЕЧАНИЕ 1: Мне известно об обходном пути с использованием скомпилированных двоичных файлов на этом веб-сайте. Я специально ищу решение с использованием distutils, если есть один. ПРИМЕЧАНИЕ 2. Журналы ошибок, очевидно, больше, и я разрезал их для удобства чтения.