868 votes

erreur : Impossible de trouver vcvarsall.bat

J'ai essayé d'installer le paquet Python dulwich :

pip install dulwich

Mais j'obtiens un message d'erreur énigmatique :

error: Unable to find vcvarsall.bat

La même chose se produit si j'essaie d'installer le paquet manuellement :

> python setup.py install
running build_ext
building 'dulwich._objects' extension
error: Unable to find vcvarsall.bat

7 votes

Pour une référence future, il serait bon de savoir sur quelle plateforme vous utilisez ce système.

0 votes

47 votes

Si vous pensez qu'il s'agit d'un message d'erreur ridiculement énigmatique et inutile, veuillez voter pour le bogue à l'adresse suivante bugs.python.org/issue2943

685voto

fmuecke Points 4790

U : Les commentaires signalent que les instructions données ici peuvent être dangereuses. Envisagez d'utiliser l'édition Express de Visual C++ 2008 ou l'édition spéciale de Compilateur Microsoft Visual C++ pour Python ( détails ) y PAS en utilisant la réponse originale ci-dessous. Le message d'erreur original signifie que la version requise de Visual C++ n'est pas installée.


Pour les installations Windows :

Lors de l'exécution du fichier setup.py pour l'installation des paquets, Python 2.7 recherche un Visual Studio 2008 installé. Vous pouvez tromper Python pour qu'il utilise un Visual Studio plus récent en définissant le chemin d'accès correct dans le fichier VS90COMNTOOLS avant d'appeler setup.py .

Exécutez la commande suivante en fonction de la version de Visual Studio installée :

  • Visual Studio 2010 (VS10) : SET VS90COMNTOOLS=%VS100COMNTOOLS%
  • Visual Studio 2012 (VS11) : SET VS90COMNTOOLS=%VS110COMNTOOLS%
  • Visual Studio 2013 (VS12) : SET VS90COMNTOOLS=%VS120COMNTOOLS%
  • Visual Studio 2015 (VS14) : SET VS90COMNTOOLS=%VS140COMNTOOLS%

ATTENTION : Comme indiqué ci-dessous, il est peu probable que cette réponse fonctionne si vous essayez de compiler des modules python.

Voir Construction de lxml pour Python 2.7 sous Windows pour plus de détails.

2 votes

Ne fonctionne pas : error: \Microsoft was unexpected at this time.

8 votes

@Gili : Il semble que ce problème soit dû à des espaces dans la variable, essayez de la mettre entre guillemets. Pour moi, %VS100COMNTOOLS%=" C:\Program Fichiers (x86) \Microsoft Visual Studio 10.0 \Common7\Tools "

0 votes

Si vous avez VS 2005 : SET VS90COMNTOOLS=%VS80COMNTOOLS%.

225voto

ninMonkey Points 4136

J'ai trouvé la solution. J'ai eu exactement le même problème et la même erreur en installant 'amara'. J'avais installé mingw32, mais distutils devait être configuré.

  1. J'ai Python 2.6 qui était déjà installé.

  2. J'ai installé mingw32 pour C:\programs\mingw\

  3. Ajoutez le répertoire bin de mingw32 à votre variable d'environnement : append c:\programs\MinGW\bin; a la PATH

  4. Modifier (créer s'il n'existe pas) distutils.cfg situé à l'adresse C:\Python26\Lib\distutils\distutils.cfg d'être :

    [build]
    compiler=mingw32
  5. Exécuter maintenant easy_install.exe amara .

Assurez-vous que l'environnement est défini en ouvrant un nouveau cmd.exe .

1 votes

'[build]' et 'compiler=mingw32' devraient être sur deux lignes séparées. Le balisage semble l'avoir légèrement perturbé.

45 votes

Cela fonctionne très bien avec Python2.6, mais pour une raison que j'ignore, je n'arrive pas à le faire fonctionner avec Python2.7. Cela fonctionne si je télécharge les sources de mon paquetage et que je l'installe en utilisant 'python setup.py install --compile=mingw32', mais pour une raison quelconque, l'utilisation de easy_install ou de pip essaie toujours de trouver vcvarsall.

2 votes

J'ai finalement réussi à installer scikits.image dans Python(x,y) 2.7 en ajoutant C:\msysgit\mingw\mingw32\bin y C:\msysgit\mingw\bin dans le PATH de l'utilisateur et redémarrer Spyder avant d'exécuter pip install à nouveau

220voto

VolodymyrB Points 1777

Vous pouvez installer la version compilée à partir de http://www.lfd.uci.edu/~gohlke/pythonlibs/

15 votes

Juste un conseil : vous pouvez installer le paquet de ce site dans virtualenv en lançant easy_install binary_installer_built_with_distutils.exe dans le serveur virtuel, en fonction de cette réponse .

1 votes

Vous pouvez également wheel convert ....exe ces installateurs et les installer avec pip quand vous le souhaitez.

3 votes

Pour être plus précis, lfd.uci.edu/~gohlke/pythonlibs/#mysql-python Une fois téléchargée, ouvrez un terminal en tant qu'administrateur et exécutez python -m pip install <filename>

167voto

Jaxrtech Points 1471

Si vous souhaitez compiler avec Visual Studio C++ au lieu de mingw...

  1. Exécuter python.exe pour afficher la version de VC++ avec laquelle il a été compilé (exemple ci-dessous).

    Il est important pour utiliser la version correspondante du compilateur Visual C++ avec lequel Python a été compilé depuis le début de l'année. distilutils 's get_build_version empêche de mélanger les versions ( selon l'avertissement de Piotr ).

    • Le jaune (en haut) est Python 2.7, compilé avec MSC v.1500 (Visual Studio C++ 2008).
    • Le rouge (en bas) est Python 3.4.1, compilé avec MSC v.1600 (Visual Studio C++ 2010).

    Example from the command line showing Python 2.7 compiled with MSC v.1500 and Python 3.4.1 compiled with MSC v.1600

  2. Utiliser le tableau ci-dessous [1] pour faire correspondre la version interne de VC++ avec la version correspondante de Visual Studio :

    MSC v.1000 -> Visual C++ 4.x        
    MSC v.1100 -> Visual C++ 5          
    MSC v.1200 -> Visual C++ 6          
    MSC v.1300 -> Visual C++ .NET       
    MSC v.1310 -> Visual C++ .NET 2003  
    MSC v.1400 -> Visual C++ 2005  (8.0)
    MSC v.1500 -> Visual C++ 2008  (9.0)
    MSC v.1600 -> Visual C++ 2010 (10.0)
    MSC v.1700 -> Visual C++ 2012 (11.0)
    MSC v.1800 -> Visual C++ 2013 (12.0)
    MSC v.1900 -> Visual C++ 2015 (14.0)
    MSC v.1910 -> Visual C++ 2017 (15.0)
    MSC v.1911 -> Visual C++ 2017 (15.3)
    MSC v.1912 -> Visual C++ 2017 (15.5)
    MSC v.1913 -> Visual C++ 2017 (15.6)
    MSC v.1914 -> Visual C++ 2017 (15.7)
    MSC v.1915 -> Visual C++ 2017 (15.8)
    MSC v.1916 -> Visual C++ 2017 (15.9)   
  3. Téléchargez et installez la version correspondante de Visual Studio C++ à partir de l'étape précédente.
    Des notes supplémentaires concernant des versions spécifiques de VC++ sont énumérées ci-dessous.

    Notes pour Visual Studio C++ 2008

    Pour sólo pour les compilateurs 32 bits, téléchargez Visual Studio C++ 2008 Express Edition .

    Pour les compilateurs 64 bits [2] [3] , télécharger Windows SDK pour Windows 7 et .NET Framework 3.5 SP1 .

    • Décochez toutes les cases, à l'exception de Developer Tools >> Visual C++ Compilers pour gagner du temps et de l'espace disque en n'installant pas les outils SDK dont vous n'avez pas besoin.

    Notes pour Visual Studio C++ 2010

    Selon Microsoft, si vous avez installé Visual Studio 2010 SP1, il est possible qu'il ait supprimé les compilateurs et les bibliothèques pour VC++.
    Si c'est le cas, téléchargez Mise à jour du compilateur Visual C++ 2010 SP1 .

    Notes pour Visual Studio C++ 2015

    Si vous n'avez pas besoin de l'IDE Visual Studio, téléchargez Outils de construction de Visual Studio C++ 2015 .

    Notes pour Visual Studio C++ 2017

    Si vous n'avez pas besoin de l'IDE Visual Studio, téléchargez Outils de construction pour Visual Studio 2017 .

    Suggestion : Si vous disposez d'une installation de Python en 32 et 64 bits, vous pouvez également utiliser l'option virtualenv pour créer des environnements Python distincts afin de pouvoir utiliser l'un ou l'autre à la fois sans avoir à modifier le chemin d'accès pour choisir la version de Python à utiliser.

Selon le @srodriguex Il est possible de ne pas charger manuellement le fichier batch (étapes 4 à 6) en copiant quelques fichiers batch à l'endroit où Python effectue sa recherche en procédant comme suit cette réponse . Si cela ne fonctionne pas, voici les étapes suivantes qui ont fonctionné pour moi.

  1. Ouvrir un cmd.exe

  2. Avant vous essayez d'installer quelque chose qui nécessite des extensions C, exécutez le fichier batch suivant pour charger l'environnement du compilateur VC++ dans la session (c'est-à-dire les variables d'environnement, le chemin d'accès au compilateur, etc.)

    Exécuter :

    • Compilateurs 32 bits :

      Note : Les installations Windows 32 bits n'auront que C:\Program Files\ comme prévu

      "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"

    • 64-bit Compilateurs :

      "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars64.bat"

      Note : Oui, les compilateurs natifs 64 bits sont en Program Files (x86) . Ne me demandez pas pourquoi.
      En outre, si vous vous demandez quelle est la différence entre vcvars64.bat y vcvarsx86_amd64.bat ou, plus important encore, la différence entre amd64 y x86_amd64 Les premiers concernent les outils de compilation 64 bits natifs et les seconds les compilateurs croisés 64 bits qui peuvent fonctionner sur une installation Windows 32 bits.

    Mise à jour :
    Si, pour une raison quelconque, vous obtenez error: ... was unexpected at this time. où les ... est une série de caractères, vous devez vérifier que la variable du chemin d'accès ne contient pas de caractères étrangers tels que des guillemets supplémentaires ou des caractères parasites. Le fichier batch ne pourra pas mettre à jour le chemin d'accès à la session s'il n'est pas en mesure de le comprendre.

  3. Si tout s'est bien passé, vous devriez obtenir l'un des messages suivants, en fonction de la version de VC++ et de la commande que vous avez exécutée :

    Pour les outils de compilation 32 bits :
    Setting environment for using Microsoft Visual Studio 20xx x86 tools.

    Pour les outils de compilation 64 bits :
    Setting environment for using Microsoft Visual Studio 20xx x64 tools.

  4. Maintenant , exécutez l'installation via python setup.py install o pip install pkg-name

  5. Il faut espérer et croiser les doigts pour que les planètes soient alignées correctement pour que VC++ coopère.

0 votes

Je ne saurais trop vous recommander de visite de passer directement au 64 bits. Ce n'est qu'une question de temps avant que vous n'ayez besoin de plus de 4 Go d'espace d'adressage. Je parle d'expérience douloureuse après être passé à 32 bits parce que c'était beaucoup plus facile, puis avoir dû tout désinstaller, y compris les dépendances, et passer à 64 bits. Presque un week-end entier.

1 votes

Mais encore une fois, j'oublie combien de personnes vont devoir utiliser Python pour des tâches beaucoup plus importantes comme celle-là. Et @ThomasBrowne, je suis sûr que c'était une expérience douloureuse et un mal inutile. Je me penche sur la question et j'espère pouvoir trouver quelque chose. Le principal problème est que Visual Studio C++ 2008 Express n'est pas livré avec un compilateur 64 bits, mais je suis sûr qu'il est là quelque part.

0 votes

Je viens de le mettre à jour avec plus d'informations sur la façon d'obtenir les compilateurs 64 bits si vous en avez besoin.

55voto

fpessoa Points 706

Je viens d'avoir le même problème, je vais donc raconter mon histoire ici en espérant que cela aidera quelqu'un d'autre qui a le même problème et lui épargnera les quelques heures que je viens de passer :

J'ai mingw (g++ (GCC) 4.6.1) et python 2.7.3 dans une boîte Windows 7 et j'essaie d'installer PyCrypto.

Tout a commencé par cette erreur lors de l'exécution de setup.py install :

error: Unable to find vcvarsall.bat

Facilement résolu après avoir googlé l'erreur en spécifiant mingw comme compilateur de choix :

setup.py install build --compiler=mingw32

Le problème est que j'ai obtenu une autre erreur :

configure: error: cannot run C compiled programs.

Il s'avère que mon antivirus bloquait l'exécution d'un fichier .exe fraîchement compilé. J'ai simplement désactivé le "bouclier résident" de l'antivirus et je suis passé à l'erreur suivante :

cc1.exe: error: unrecognized command line option '-mno-cygwin' 
error: command 'gcc' failed with exit status 1

Ceci a permis de résoudre le problème : "Soit vous installez une version légèrement plus ancienne de MinGW, soit vous éditez distutils \cygwinccompiler.py dans votre répertoire Python pour supprimer toutes les instances de -mno-cygwin". (extrait de aquí )

Maintenant, je peux enfin commencer à travailler.

7 votes

Vous aurez également besoin d'une version de la bibliothèque Python compatible avec MinGW. Voir eli.thegreenplace.net/2008/06/28/ pour plus d'informations

0 votes

Des rebondissements :D

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X