web-dev-qa-db-fra.com

Python PIP a des problèmes avec le chemin pour MS Visual Studio 2010 Express pour une installation 64 bits sur Windows 7

Je créais un virtualenv avec une installation propre de python 3.3, version 64 bits. (Remarque: j'ai plusieurs installations de python sur mon ordinateur, y compris WinPython). mais je veux configurer des virtualenvs propres et petits pour plusieurs projets sur lesquels je travaille. La version WinPython fonctionne très bien.) Lorsque j'ai utilisé pip pour essayer d'installer des packages, j'ai reçu un message d'erreur (peut inclure le journal de pip si demandé). Au final, les dernières lignes du message d'erreur étaient:

File "c:\python33-b\Lib\distutils\msvc9compiler.py", line 287, in query_vcvarsall raise ValueError(str(list(result.keys())))

ValueError: ['path']

J'ai étudié les résultats de la fonction query_vcvarsall dans le msvc9compiler.py. J'ai découvert que cette fonction recherchait le chemin de vcvarsall à partir de MS Visual Studio 10 Express sur mon ordinateur. Il recherche 4 composants: INCLUDE =, PATH =, LIB = et LIBPATH =. Celles-ci étaient spécifiques à MS VS 2010. Mon installation a envoyé un argument "AMD64" à cette fonction. Il n'a trouvé rien d'autre que l'instruction PATH = mais il a trouvé le fichier vcvarsall.bat. Lorsque j'ai trompé cette fonction pour utiliser l'argument "x86", elle a trouvé toutes les 4 instructions et semblait fonctionner correctement.

J'ai passé un peu de temps à faire des recherches sur le Web. J'ai trouvé que MS VS Express 2010 s'installe par défaut en 32 bits. Il faut le configurer pour qu'il s'exécute en 64 bits (ce qui signifie qu'il définira les instructions nécessaires ci-dessus). Apparemment, il y avait un bogue et les outils 64 bits n'étaient pas installés avec cette version. J'ai donc installé MS SDK afin d'installer les outils 64 bits. J'ai ensuite trouvé qu'il y avait un correctif à cela et installé cela (répertorié ci-dessous dans les liens).

Plusieurs méthodes ont été décrites pour créer les chemins des VS 64 bits. L'une consistait à exécuter vcvarsall AMD64 Sur la ligne de commande pour MS VS. Cela a entraîné un message disant que les outils n'étaient pas installés sur mon ordinateur. Ces outils devaient résider dans le répertoire C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64. Le fichier qu'il recherche apparemment est vcvars64.bat (ou quelque chose de similaire). J'ai le répertoire mais pas le fichier batch. (Il a été recommandé d'utiliser la méthode x86_AMD64, mais elle présente tous les mêmes problèmes.)

La deuxième recommandation était d'exécuter setenv /x64 À partir de la ligne de commande du SDK. J'ai couru ça et ça a semblé fonctionner correctement. Cependant, lorsque je suis allé, j'ai essayé d'installer des packages via pip, j'ai reçu le même message d'erreur.

Ma question est finalement de savoir comment faire fonctionner pip correctement? Juste pour mentionner, oui, j'ai redémarré avant de tester à nouveau pip après chaque installation et d'essayer de résoudre ce problème.

Voici quelques sites qui m'ont aidé à aller aussi loin:

1) Lancement d'une invite de commande 64 bits à partir de Visual Studio 201

2) Définition du chemin et des variables d'environnement pour les versions de ligne de commande MS VS 2010:
http://msdn.Microsoft.com/en-us/library/f2ccy3wt.aspx

3) VS2010 Express et compilateur x64 manquant:
https://social.msdn.Microsoft.com/Forums/en-US/e0ef4613-d90f-4eec-90db-41339ed31367/vs2010-express-and-missing-x64-compiler?forum = Vsexpressinstall

4) CORRECTIF: les compilateurs Visual C++ sont supprimés lorsque vous mettez à niveau Visual Studio 2010 Professional ou Visual Studio 2010 Express vers Visual Studio 2010 SP1 si Windows SDK v7.1 est installé:
http://support.Microsoft.com/kb/2519277

5) msvc9compiler.py: ValueError lors de la tentative de compilation avec VC Express: http://bugs.python.org/issue7511

18
Stacy L. Gardner

Finalement, j'ai pu faire fonctionner Pip. En bref (et redondant à partir des informations ci-dessus), voici ce que j'ai fait pour intaller les packages 64 bits pour python 3.3:

1) Microsoft Visual C++ 2010 Express installé Télécharger ici ( http://www.visualstudio.com/downloads/download-visual-studio-vs )

2) Microsoft SDK 7.1 installé (Windows 7) ( http://www.Microsoft.com/en-us/download/details.aspx?id=8279 )

3) Construit/activé les outils 64 bits dans le SDK. Allez dans le menu Démarrer et sous le dossier Microsoft Windows SDK v7.1, sélectionnez Invite de commandes Windows SDK 7.1. Un Shell apparaîtra. Tapez la commande suivante setenv /x64.

4) J'ai installé un correctif (je ne sais pas s'il était finalement nécessaire.) ( http://support.Microsoft.com/kb/2519277 )

5) Création d'un nouveau fichier vcvars64.bat sous C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64. À l'intérieur de ce nouveau fichier batch, je n'ai inclus que la ligne CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64. Je suppose que cela oblige distutils à utiliser le compilateur C++ à partir du SDK. Pip installé correctement après cela. Si je comprends bien, le compilateur C++ doit être le même que celui utilisé pour compiler python 3.3. D'après mes recherches, il semble que le SDK tel qu'il est installé soit le même compilateur mais ne nécessite tout simplement pas que le fichier original vcvars64.bat soit présent. Ces informations proviennent de: http://www.w7forums.com/threads/vcvarsall -bat-no-64bit-support-vcvars64-bat-missing.6606 / . Veuillez me corriger si je crée des problèmes avec cette solution. Merci.

22
Stacy L. Gardner

Pour moi, il suffisait d'effectuer les étapes 1, 2 et 5, l'étape 4 n'était pas requise:

1) Installez Microsoft Visual C++ 2010 (dans mon cas, pas Express)

2) Installez Microsoft SDK 7.1 (Windows 7)

Sautez 3 et 4.

5) Créez C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64\vcvars64.bat contenant la ligne CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv. cmd "/ x64

Terminé: pip3 installe numpy works.

5
jayesef

La 5ème étape n'a pas fonctionné pour moi (j'utilise VC++ 10 Express). J'ai finalement réussi à faire fonctionner pip en exécutant pip install dans l'invite de commande du SDK après avoir tapé setenv/x64 (l'exécution de pip dans l'invite cmd.exe normale n'a pas fonctionné).

1
Hao

Voici ce que j'ai fait pour installer des packages 64 bits pour python 3.4.4 sur un processeur Windows 10 x64 et x64:

0) Utilisez des whl AMD64 précompilés pour tout ce qui est possible, et la méthode suivante pour tout ce qui a généré des erreurs

1a) Microsoft Visual C++ 2010 Express installé

1b) Microsoft Visual C++ 2010 Express non installé redistribuable via le panneau de configuration

2) Microsoft SDK 7.1 installé (Windows 10)

3) J'ai installé le correctif ( http://support.Microsoft.com/kb/2519277 )

4) Création d'un nouveau fichier vcvars64.bat sous C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64 comprenant uniquement la ligne

CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64

5) Exécution de l'installation de pip dans l'invite de commande du SDK après avoir tapé

setenv /x64

et

set DISTUTILS_USE_SDK=1
0
user27630