Python >> Tutoriel Python >  >> Python

[RÉSOLU] Erreur :Impossible de trouver vcvarsall.bat

Énoncé du problème : Comment corriger "Erreur :Impossible de trouver vcvarsall.bat" en Python ?

Dans ce tutoriel, nous allons voir ce que vcvarsall.bat est dans Visual Studio Code et comment/quand le Error: Unable to find vcvarsall.bat se produit en Python. Nous examinerons également différentes approches pour résoudre l'erreur.

Qu'est-ce que vcvarsall.bat ?

vcvarsall.bat est un outil d'invite de commandes de Visual Studio utilisé dans Visual Studio. Le vcvarshall.bat L'outil vous permet de définir différentes options pour l'IDE (environnement de développement intégré). De plus, il vous permet également de créer, déboguer et déployer les projets à partir de la ligne de commande. vcvarsall.bat est une partie essentielle du compilateur Visual Studio Code et est nécessaire pour compiler un module.

Comment se produit l'erreur :Impossible de trouver vcvarsall.bat en Python ?

L'erreur Unable to find vcvarsall.bat apparaît principalement sur les systèmes Windows lorsque vous essayez d'installer ou de créer un package Python contenant C codes/bibliothèques. Lorsque vous obtenez cette erreur, cela signifie essentiellement que vous essayez d'installer un package contenant un module d'extension, mais seul le code source est présent et Python est incapable de compiler ce code. Comme nous l'avons appris plus haut, vcvarsall.bat est une partie essentielle du compilateur Visual Studio Code qui est nécessaire pour compiler un module ; cela signifie que s'il est manquant, le code source est écrit dans un autre langage (C, C++) ne sera pas compilé et vous obtiendrez l'erreur - "Impossible de trouver vcvarsall.bat ."

Exemple : Supposons que nous essayons d'installer le package Python dulwich :

pip install dulwich

Sortie :

error: Unable to find vcvarsall.bat

La même chose se produit lorsque vous essayez d'installer le package manuellement à l'aide de setup.py :

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

Remarque :

  • Vous pouvez intégrer n'importe quel code écrit dans un langage compilé tel que C, C++ ou Java dans un script Python. Ce code sera considéré comme une extension .
  • Un module d'extension en Python est simplement une bibliothèque C.
    • L'extension de ces bibliothèques sous Unix est .so (objet partagé) .
    • L'extension de ces bibliothèques sous Unix est .dll (bibliothèque liée dynamiquement).

Eh bien, comment pouvons-nous surmonter ce problème? Plongeons-nous dans les correctifs qui peuvent nous aider à nous débarrasser de cette erreur.

#Fix 1 :Utiliser Python ou la version 32 bits de Canopy

Une façon de résoudre cette erreur serait d'installer correctement MS Visual C++ 2008 , le compilateur utilisé pour compiler Python 2.x lui-même. Pour prendre des précautions afin que l'erreur ne se produise pas, vous devez compiler avec la même longueur (32 bits ou 64 bits) que la version de Canopy ou Python où vous souhaitez utiliser le code C compilé. La situation la plus abordable, que vous utilisiez Windows 32 bits ou 64 bits, consiste à utiliser la version 32 bits de Canopy, qui a dans l'ensemble des fonctionnalités identiques à la version 64 bits de Canopy, sauf si vous travaillez avec des données volumineuses. tableaux.

Remarque : Avant d'installer quoi que ce soit qui nécessite les extensions C, il vous suffit d'exécuter le fichier batch suivant qui chargera l'environnement du compilateur VC++ dans la session

Compilateurs 32 bits :

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

Compilateurs 64 bits :

Les compilateurs 64 bits se trouvent dans les fichiers programme.

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

Remarque : La différence entre vcvars64.bat et vcvarsx86_amd64.bat ou la différence entre amd64 et x86_amd64 , est que le premier est utilisé pour les outils de compilation 64 bits, tandis que le second est utilisé pour les compilateurs croisés 64 bits qui peuvent également s'exécuter sur une installation Windows 32 bits.

#Fix 2 :Définissez le chemin d'accès correct dans la variable d'environnement

Lors de l'installation manuelle du package à l'aide de setup.py , Python 2.7 recherche une version installée de Visual Studio 2008. Pendant ce temps, vous pouvez inciter le compilateur Python à utiliser une version plus récente de Visual Studio en définissant simplement le chemin correct dans la variable d'environnement (VS90COMNTOOLS ) avant d'appeler le setup.py . Après cela, vous pouvez exécuter l'une des commandes suivantes 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%

#Fix 3 :Installation d'un compilateur Microsoft

Parfois, vous pouvez corriger cette erreur en installant un compilateur Microsoft compatible avec le compilateur utilisé pour construire Python pour résoudre l'erreur :Unable to find vcvarsall.bat . Cela implique que vous devrez installer Visual C++ 2008 ou des versions plus récentes. L'erreur est automatiquement résolue après cela car Microsoft nous fournit un ensemble de compilateurs et d'en-têtes pour pouvoir compiler les extensions Python. Lorsque vous recherchez "Microsoft C++ redistribuable 2010" ou similaire, vous trouverez un lien direct pour le télécharger auprès de Microsoft.

#Fix 4 :Être bloqué par un programme antivirus

L'erreur :Unable to find vcvarsall.bat peut également se produire comme une "erreur de configuration :impossible d'exécuter des programmes compilés en C " lorsque vous essayez d'installer le package manuellement en utilisant setup.py .

L'erreur ci-dessus se produit lorsque l'antivirus installé sur votre système bloque l'exécution du .exe fraîchement compilé . Par conséquent, pour résoudre cette erreur, vous devez désactiver le bouclier résident antivirus. Cependant, vous pouvez toujours rencontrer une erreur comme indiqué ci-dessous :

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

Pour résoudre cette erreur, vous devez installer une ancienne version de MinGW , ou allez dans le répertoire Python et modifiez le distutils\cygwinccompiler.py et supprimer toutes les instances de -mno-cygwin.

#Fix 5 :Ajout du répertoire bin de mingw32 à la variable d'environnement

Une autre solution possible à cette erreur est que vous devez ajouter le répertoire bin de mingw32 à une variable d'environnement en ajoutant le PATH avec C:\programs\mingw\bin;

De plus, vous devez créer le distutils.cfg situé à :C:\Python27\Lib\distutils\distutils.cfg contenant –

[construire]
Compilateur =mingw32

Pour traiter l'erreur - MinGW ne reconnaissant pas l'indicateur -mno-cygwin, il vous suffit de supprimer l'indicateur dans C:\Python27\Lib\distutils\cygwincompiler.py comme suit :

self.set_executables(compiler = 'gcc -O -Wall',
                         compiler_so = 'gcc -mdll -O -Wall',
                         compiler_cxx = 'g++ -O -Wall',
                         linker_exe =' gcc',
                         linker_so = '%s %s %s'
                                    % (self.linker_dll, shared_option,
                                       entry_point))

Nous sommes arrivés à la fin de notre discussion ici. J'espère que ce tutoriel vous a aidé. Veuillez rester à l'écoute et abonnez-vous pour des articles et des discussions plus intéressants.

Article rédigé par : Shubham Sayon  et Rashi Agarwal