Je ne parviens pas à installer numpy via pip install numpy sur mon ordinateur exécutant Python 3.4 en raison de diverses erreurs liées à des problèmes de compilation (ce n'est le cas que sur une installation 64 bits de Python).
C’est un problème qui a fait l’objet de nombreux reportages et j’avais une question connexe concernant l’impossibilité de trouver vcvarsall.bat. J'ai testé cela sur trois machines différentes exécutant Windows 8.1, 7 Enterprise et 7 Home Editions, et cela revient toujours.
L’installation de Visual Studio 2010 Express C++ supprime la première erreur du lien, c’est-à-dire qu’il est impossible de trouver vcvarsall.bat, mais lève une exception se terminant par une exception ValueError comme ici:
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']
J'ai ensuite suivi ce conseil et corrigé le fichier comme lié au forum de discussion, ce qui a entraîné une erreur 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
En suivant les conseils dans le même lien, j'ai ajouté la définition suivante de KEY_BASE
avant que la variable soit appelée dans msvc9compiler.py:
KEY_BASE = r"Software\Microsoft\\"
La dernière erreur que je n'ai pas pu résoudre est la suivante:
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
J'ai essayé ce qui suit mais rien de tout cela n'a résolu l'erreur Broken toolchain
:
easy_install
car certains utilisateurs ont suggéré que cela pourrait fonctionner de cette façon.NOTE 1: Je connais la solution de contournement utilisant les fichiers binaires compilés sur ce site Web Je recherche spécifiquement une solution utilisant distutils s’il en existe un. NOTE 2: Les journaux d’erreur sont évidemment plus volumineux et je eux pour la lisibilité.
J'ai pu reproduire toutes ces erreurs dans Windows 7 Professional (64 bits).
Votre dernier problème (Chaîne d'outils brisée) est causé par des problèmes liés plus manifestes. J'ai pu contourner ce problème en modifiant la ligne suivante (dans msvc9compiler.py):
mfinfo = self.manifest_get_embed_info(target_desc, ld_args)
à
mfinfo = None
contournant ainsi la déclaration if qui suit immédiatement. Après ce changement, numpy a été compilé avec succès pour moi.
Je pense que la solution la plus simple consiste à ouvrir l'invite de commande Visual Studio (vous ne devriez pas avoir besoin d'autres correctifs, seulement de la dernière version de Python 2 ou 3).
Plus précisément, dans votre menu Démarrer, vous devriez avoir quelque chose comme "Invite de commandes Visual Studio (2010)". Ouvrez ce programme (cela ouvrira une invite de commande), puis dans l'invite de commande, tapez:
pip install numpy
Commentaires:
1) Différentes versions de Python doivent être compilées avec différentes versions de Visual Studio. Je pense que les gars de Python ont l'intention de vous compiler avec la version 2010 (je peux me tromper à ce sujet). Il est donc possible qu'essayer d'ouvrir Visual Studio 2013 Prompt ne fonctionne pas. Il se peut que la dernière version de Python ait changé de compilateur, mais je commencerais par essayer la commande 2010 Invite.
2) Vous pouvez avoir plusieurs options d'invite de commande. J'ai eu de la chance avec la version de base seulement "Invite de commandes Visual Studio (2010)"
3) Pour installer Python 3.4, je pouvais simplement ouvrir une invite de commande standard, puis
pip install numpy
mais pour Python 2.7, je devais utiliser cette commande Prompt astuce.