Python PIP a des problèmes avec chemin d'accès pour MS Visual Studio 2010 Express pour 64-bit installer sur Windows 7

J'ai été la création d'un virtualenv avec une nouvelle installation de python 3.3, la version 64 bits. (Note: j'ai plusieurs installations de python sur mon ordinateur, y compris WinPython mais que vous souhaitez configurer propre et petit virtualenvs pour plusieurs projets que je suis en train de travailler sur. Le WinPython version fonctionne très bien.) Lorsque j'ai utilisé du pep à essayer d'installer les paquets, j'ai un message d'erreur (peut inclure le pep journal si demandé). En fin de compte, les dernières lignes du message d'erreur ont été:

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 trouvé que cette fonction a été à la recherche pour le chemin de vcvarsall à partir de MS Visual Studio 10 Express sur mon ordinateur. Il est à la recherche de 4 composants: INCLUDE=, PATH= LIB=, et LIBPATH=. Ces étaient spécifiques pour MS VS 2010. Mon installation a envoyé un argument de "amd64" à cette fonction. Il n'a rien trouvé, mais le CHEMIN d'accès= déclaration, mais il a trouvé l'vcvarsall.le fichier bat. Quand je l'ai trompé cette fonction pour utiliser le "x86" argument, il a trouvé tous les 4 déclarations et est apparu comme si elle allait s'exécuter correctement.

J'ai passé un certain temps à la recherche de ce sur le web. J'ai trouvé que MS VS Express 2010 installe par défaut sur 32 bits. On a de la mettre à l'exécuter en tant qu'64 bits (ce qui signifie qu'il va définir les instructions nécessaires ci-dessus). Il y a apparemment un bug et les outils 64 bits n'ont pas été installés avec cette version. J'ai donc installé MS SDK pour installer les outils 64 bits. J'ai ensuite trouvé qu'il y avait un correctif à ce et installé (énumérés ci-dessous dans les liens).

Il y avait plusieurs méthodes décrites pour créer les chemins d'accès pour le 64 bits VS. L'un était de courir vcvarsall amd64 sur la ligne de commande pour MS VS. Il en est résulté un message disant que les outils n'étaient pas installé sur mon ordinateur. Ces outils ont été à résider dans le C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 répertoire. Le fichier que apparemment il est à la recherche d'vcvars64.chauve-souris (ou quelque chose de similaire). J'ai le répertoire mais pas le fichier de commandes. (Il y avait une recommandation d'utiliser le x86_amd64 méthode, mais elle a tout de même des questions.)

La deuxième recommandation était de courir setenv /x64 dans le kit de développement de la ligne de commande. J'ai couru, et il semble fonctionner correctement. Cependant, quand je suis allé, j'ai essayé d'installer les paquets via pip, j'ai eu le même message d'erreur.

Ma question en fin de compte est de savoir comment obtenir pip cours d'exécution en douceur? Pour n'en mentionner que, oui, je n'ai redémarrer avant j'ai testé pip de nouveau après chaque installation et une tentative de résolution de ce.

Voici quelques sites qui m'ont aidé à en arriver là:

1) Le lancement d'une version 64 bits de l'invite de commandes de Visual Studio 2010

2) définir le Chemin d'accès et les Variables d'Environnement pour MS VS 2010 en Ligne de Commande: les versions

http://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx

3) VS2010 Express et manquant x64 compilateur:

https://social.msdn.microsoft.com/Forums/en-US/e0ef4613-d90f-4eec-90db-41339ed31367/vs2010-express-and-missing-x64-compiler?forum=Vsexpressinstall

4) CORRECTIF: Visual C++ compilateurs sont supprimés lors de la mise à niveau de Visual Studio 2010 Professional ou Visual Studio 2010 Express de Visual Studio 2010 SP1 si SDK Windows v7.1 est installé:

http://support.microsoft.com/kb/2519277

5) msvc9compiler.py: ValueError lorsque vous essayez de compiler avec VC Express: http://bugs.python.org/issue7511

  • Donc pour clarifier les choses: Vous avez besoin d'un script qui appelle vcvarsall.bat, prend un amd64 argument, et fait la même chose que d'appeler le réel vsvarsall.bat suivie par setenv /x64? Il semble que vous pouvez simplement créer un vcvarsall.bat qui appelle le réel par un chemin absolu, puis appelle la setenv, et placez-la sur votre %PATH% que le vrai et où vous avez configuré pip de le trouver à la place de votre chemin d'accès (le cas échéant), et qui permettrait de résoudre le problème, non?
  • Si je comprends bien, pip utilise vcvarsall.bat. PIP besoins différents paramètres du système (PATH= INCLUENT=, LIB=, LIBPATH=). Mon python est en 64 bits et n'est pas de trouver les paramètres du système dont il a besoin. Ces paramètres sont définis par ce fichier de commandes lorsque vcvarsall amd64 est exécuté en ligne de commande à partir de son répertoire. Une deuxième méthode, il a été suggéré de créer ces instructions de chemin d'accès à l'aide de MS SDK. Il a sa propre ligne de commande qui peuvent être sélectionnés à partir du menu démarrer. 'setenv /x64' est exécuté à partir de cette ligne de commande. J'ai lu "pas de définir ces variable de chemin d'accès manuellement" donc j'essayais de le fixer, comme l'a suggéré.
  • Ouais, mon point est que vous pouvez faire un faux vcvarsall.bat juste pour que pip pouvez l'utiliser. Si pour le faire en appelant C:\path\to\real\vcvarsall.bat amd64, ou en appelant C:\path\to\vcvarsall.bat et puis setenv /x64, ou quelque chose de différent, n'est-ce pas important; si vous connaissez les commandes à exécuter pour faire fonctionner les choses, ce sont les commandes à mettre dans le faux fichier de commandes. (Je poste cela comme un commentaire parce que c'est évidemment une jolie hacky solution, et j'espère que quelqu'un a mieux... mais je pense qu'il devrait être assez facile de faire le travail si nécessaire.)
  • En essayant de comprendre cela, il semble que vcvarsall revient sans cesse dans des postes dans les moyens que je ne vois pas le rapport. Il est comme il est utilisé de différentes manières, et le seul moyen que j'ai essayé d'utiliser, il a été de paramétrer les variables du système. Donc je ne pense pas (à ce stade) que le pep doit être dupé. Un message d'erreur à un moment!
  • Honnêtement, j'ai donné à l'aide de MSVC pour construire les extensions Python dès que gcc-mingw pourrait construire des extensions pour VC7 Python s'appuie tout VC8 ne pouvais pas le faire. (J'ai peut-être un peu sur les numéros de version, mais vous voyez l'idée). J'espère que quelqu'un qui s'occupe de ce qui peut aider le plus. Mais en attendant, vcvarsall.bat est vraiment un simple script batch; si vous voulez comprendre ce qu'il fait, juste type ou l'ouvrir dans le bloc-notes.