web-dev-qa-db-fra.com

Impossible de trouver vcvarsall.bat lors de l'exécution d'un script Python

Je travaille sur Vista et j'utilise Python 2.6.4. J'utilise un logiciel qui utilise un script Python, mais je me suis heurté au message:

cannot find vcvarsall.bat

J'ai donc installé Visual C++ 2010. Le fichier n'est toujours pas trouvé, mais il est là. Mon hypothèse (très peu éduquée ...) est que, quelque part, le chemin est mauvais, car j’ai aussi un vieux dossier Visual 2008 (assez vide). Je ne sais pas où faire les changements pour le nouveau chemin. Est-ce que je change quelque chose dans le registre ou dans le script? Ou ailleurs?

58
Ariel

Il semble que Python recherche explicitement Visual Studio 2008. J'ai rencontré ce problème qui empêchait de trouver vcvarsall.bat alors qu'il se trouvait sur le chemin.

Il s'avère que Visual Studio 2010 crée la variable d'environnement suivante:

SET VS100COMNTOOLS=C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\

Le correctif consiste à créer une variable appelée VS90COMNTOOLS et à faire pointer ce point vers votre dossier des outils communs de Visual Studio 2010, par exemple.

SET VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\

Cela a résolu le problème pour moi et je peux maintenant construire des packages à l'aide du compilateur Visual Studio 2010. 

Vous pouvez également définir la variable d'environnement VS90 pour qu'elle pointe vers la variable d'environnement VS100 à l'aide de la commande ci-dessous:

SET VS90COMNTOOLS=%VS100COMNTOOLS%
42
CadentOrange

Voici une solution simple. J'utilise Python 2.7 et Windows 7.

Ce que vous essayez d'installer nécessite un compilateur C/C++, mais Python ne le trouve pas. De nombreux packages Python sont en fait écrits en C/C++ et doivent être compilés. vcvarsall.bat est nécessaire pour compiler C++ et pip suppose que votre machine peut le faire.

  1. Commencez par mettre à niveau setuptools, car les versions 6.0 et supérieures détecteront automatiquement un compilateur. Vous avez peut-être déjà un compilateur mais Python ne le trouve pas. Ouvrez une ligne de commande et tapez:

    pip install --upgrade setuptools

  2. Maintenant, essayez de réinstaller votre paquet:

    pip install [yourpackagename]

  3. Si cela ne fonctionne pas, alors il est certain que vous n'avez pas de compilateur, vous devrez donc en installer un:
    http://www.Microsoft.com/en-us/download/details.aspx?id=44266

  4. Maintenant, essayez à nouveau:

    pip install [yourpackagename]

Et voilà. Il devrait fonctionner pour vous.

26
alfonso

La solution à ce problème consiste à définir la variable d'environnement suivante:

VS90COMNTOOLS

Par exemple:

set VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools

Cette erreur peut être provoquée par le fait de ne pas redémarrer après l'installation de Visual Studios ou de ne pas démarrer une nouvelle invite de commande après l'installation.

De plus, la version de Visual Studios que vous pouvez utiliser pour compiler les extensions peut dépendre de la version de python pour laquelle vous construisez.

14
fileoffset

Dans 2015, si vous obtenez toujours cette erreur déroutante, blâmez setuptools par défaut pour Python que PIP utilise. 

  1. Téléchargez et installez le minimum compilateur Microsoft Visual C++ pour Python 2.7 requis pour compiler les modules Python 2.7 à partir de http://www.Microsoft.com/en-in/download/details.aspx?id=44266
  2. Mettez à jour votre setuptools - pip install -U setuptools
  3. Installez le paquet Python de votre choix qui nécessite une compilation en C. pip install blahblah

Cela fonctionnera bien.

UPDATE: Cela ne fonctionnera pas correctement pour toutes les bibliothèques. J'ai encore quelques erreurs avec quelques modules, qui nécessitent des en-têtes de bibliothèque. La seule chose qui fonctionne parfaitement est la plate-forme Linux

9
Ravi Kumar

Cette erreur cryptique signifie qu'aucun compilateur C n'est installé. Il y a eu une discussion pour proposer une erreur plus explicative (qui est poursuivie ici , enregistrez-vous et commentez si vous vous en souciez!) Mais actuellement, elle n'est pas encore mise en œuvre.

Pour résoudre ce problème, vous pouvez installer le Kit de développement logiciel (SDK) Visual Studio 2008 qui nécessite environ un Go. Vous pouvez également installer le très petit fichier VCForPython27.msi mais qui n’est actuellement pas pris en charge par distutils. Voici la procédure à suivre:

1) install Microsoft Visual C++ Compiler for Python 2.7 from
http://www.Microsoft.com/en-us/download/details.aspx?id=44266
2) Enter MSVC for Python command Prompt
3) SET DISTUTILS_USE_SDK=1
4) SET MSSdk=1
5) you can then build your C extensions: python.exe setup.py ...

Les étapes 2 à 4 doivent être reproduites à chaque fois avant de construire vos extensions C. Cela est dû à un problème avec VCForPython27.msi, qui installe les fichiers d'en-tête et vcvarsall.bat dans des dossiers d'une présentation différente de celle du kit SDK VS2008 et confond ainsi la détection du compilateur de distutils. Cela sera corrigé dans setuptools dans Python 2.7.10.

Rapport de bogue et solution de contournement par Gregory Szorc: http://bugs.python.org/issue23246

Plus d'informations et une solution de contournement pour utiliser la magie %% cython dans IPython: https://github.com/cython/cython/wiki/CythonExtensionsOnWindows

/ EDIT: De plus, si vous avez une autre version de Python, vous ne pouvez pas utiliser Microsoft Visual C++ pour Python 2.7, qui est une sorte de mini-compilateur spécialement conçu par Microsoft pour Python 2.7. Dans ce cas, vous devez installer le Kit de développement logiciel (SDK) Visual Studio correspondant à votre version de Python ou un Kit de développement logiciel (SDK) Windows avec la version correcte de l'infrastructure NET. Voir ici pour plus d'infos: https://github.com/cython/cython/wiki/CythonExtensionsOnWindows#using-windows-sdk-cc-compiler-works-for-all-python-versions

6
gaborous

cela a fonctionné pour moi (python 2.6): 

installé free ms visual studio 2008 à partir de http://www.Microsoft.com/visualstudio/en-us/products/2008-editions/express

copié vcvarsall.bat de "C:\Program Files\Microsoft Visual Studio 9.0\VC>" à "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\"

l'installateur avait déjà défini cette variable d'environnement:

VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\
5
Gonzo

On dirait que MS a publié le paquet exact nécessaire ici . BurnBit ici . Installez-le puis définissez les clés de registre dans cette réponse pour qu'il pointe vers C:\Users\username\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0

4
kag0

Si vous aviez installé Visual studio 2015 lors de l'installation rapide, vcvarsall.bat n'y est pas. Mais vous pouvez aller à programme et fonctionnalités, et modifier l’installation pour installer les outils c ++, alors vcvarsall.bat sera présent.

3
Guillaume Lebreton

CECI IS RÉPONSE À JOUR POUR LES UTILISATEURS DE WINDOWS - UNE SOLUTION TRÈS SIMPLE.

Comme souligné par d’autres, le problème est que python/cython, etc. essaie de trouver le même compilateur à partir duquel il a été construit, mais ce compilateur n’existe pas sur l’ordinateur. La plupart du temps, ce compilateur est une version de visual studio (2008, 2010 ou 2013), mais un tel compilateur n'est pas installé ou une version plus récente est installée et le système empêche l'installation d'une version plus ancienne. Donc, la solution est simple: 

1) Examinez C:\Program Files (x86) pour voir s’il existe une version installée de Microsoft Visual Studio et si elle est plus récente que la version à partir de laquelle Python a été construit. Sinon, installez (/ update to) la version à partir de laquelle Python a été construit (voir réponses précédentes), ou même une version plus récente, et suivez l'étape suivante.

2) Si une dernière version de Microsoft Visual Studio est déjà installée, nous devons faire croire à Python/cython, etc. que c'est la version à partir de laquelle elle a été construite. Et ceci est très simple: accédez aux variables d’environnement système et créez les variables suivantes, si elles n'existent pas:

VS100COMNTOOLS 

VS110COMNTOOLS 

VS120COMNTOOLS 

VS140COMNTOOLS

Et définissez le champ de ces variables sur 

"C:\Fichiers de programme (x86)\Visual Studio 10.0\Common7\Tools" (si Visual Studio 2008 est installé) ou "C:\Fichiers de programme (x86)\Microsoft Visual Studio 11.0\Common7\Tools "(si Visual Studio 2010 est installé) ou " C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools "(si Visual Studio 2013 est installé) ou " C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools "(si Visual Studio 2015 est installé).

Cette solution fonctionne pour les versions 32 bits de python. Cela peut également fonctionner pour la version 64 bits mais je n'ai pas encore testé; très probablement, pour les versions 64 bits, les étapes supplémentaires suivantes doivent être effectuées:

3) ajoutez le chemin "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC" à la variable d’environnement% PATH% (modifiez le numéro de la version de visual studio en fonction de votre version).

4) à partir de la ligne de commande, exécutez "vcvarsall.bat x86_AMD64" 

C'est tout.

3
MikeTeX

L'installation de Visual C++ est une bonne première étape, bien que je ne puisse pas dire si si la version 2010 fonctionnera. Quoi qu'il en soit, essayez-le.

Recherchez vcvarsall.bat dans le répertoire d'installation de Visual C++ (pour Visual Studio 2010, il se trouve dans ProgramFiles\Microsoft Visual Studio 10.0\VC). Ajoutez ensuite ce répertoire au chemin du système. Si vous faites cela sur la ligne de commande, vous pouvez essayer:

path %path%;c:\path\to\vs2010\bin

puis essayez à nouveau d'exécuter ce que vous essayez d'exécuter.

Pour un effet plus permanent, ajoutez-le dans les paramètres du chemin d'accès système de l'ordinateur .

3
Craig McQueen

Après avoir essayé toutes les options disponibles sur chaque thread, j'ai décidé de creuser dans la source pour trouver une solution.

Editez votre $PythonPath/Lib/distutils/_msvccompiler.py

Trouvez def _find_vcvarsall(plat_spec): Ajoutez comme ligne suivante, ajoutez

    PathToVC=r"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
    return PathToVC, r""

Et assurez-vous ensuite que votre répertoire bin Visual Studio est bien sur votre chemin.

Si cela ne fonctionne pas, vous devrez peut-être modifier d'autres fichiers, notamment:

  • $ PythonPath/Lib/distutils/msvc9compiler.py
  • $ PythonPath/Lib/site-packages/setuptools/msvc9_support.py
2
Dakusan

Au cas où quelqu'un viendrait ici chercher une réponse pour Python 3.5; vous avez besoin de Visual Studio 2015.

Obtenez la communauté Visual Studio 2015 ici: https://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs.aspx , cela a fonctionné pour moi sans autre étape.

Un grand merci à Ionel, apparemment le seul endroit sur le Web où trouver cette information! http://blog.ionelmc.ro/2014/12/21/compiling-python-extensions-on-windows/

1
Giswok

J'ai essayé la solution ici pour définir une variable d'environnement via la ligne de commande, mais cela n'a pas fonctionné. Je l'ai fait à partir d'une invite de commande standard et d'une invite de commande Visual Studio Developer.

Je pourrais surmonter ce problème comme ceci:

  1. accédez à l'écran Variables d'environnement et créez une nouvelle variable à partir de VS100COMNTOOLS et laissez-le pointer vers mon dossier d'installation Visual Studio C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools \.
  2. Allez dans le dossier ci-dessus. Dans ce dossier se trouve le fichier vsvars32.bat. Copiez ce fichier et renommez-le en vsvarsall.bat

Ma configuration est Visual Studio 2013 (12.0) et Python 3.4.2

1
Tornado

Notez qu'il existe une solution très simple.

  1. Téléchargez le logiciel à partir de http://www.Microsoft.com/en-us/download/details.aspx?id=44266 et installez-le.

  2. Recherchez le répertoire d'installation, qui ressemble à "C:\Utilisateurs\NOM_UTILISATEUR\AppData\Local\Programmes\Commun\Microsoft\Visual C++ pour Python".

  3. Modifiez le nom du répertoire "C:\Utilisateurs\NOM_UTILISATEUR\AppData\Programmes\Common\Microsoft\Visual C++ pour Python\9.0" En "C:\Utilisateurs\Nom_UTILISATEUR\AppData\Local\Programmes\Common\Microsoft\Visual C++ pour Python\VC "

  4. Ajoutez une nouvelle variable d'environnement "VS90COMNTOOLS" et sa valeur est "C:\Utilisateurs\NOM_UTILISATEUR\AppData\Local\Programmes\Commun\Microsoft\Visual C++ pour Python\VC\VC".

Maintenant tout va bien.

1
Figora

Après l'installation de Visual Studio Community 2015 Edition sur Windows 10 64 bits. Cette erreur n'est pas partie. Ensuite, j'installe Compilateur Microsoft Visual C++ pour Python 2.7 . Puisqu'il nécessite le fichier vcvarsall.bat. Ce fichier ne figure nulle part dans Visual studio Community 2015, mais dans Microsoft Visual C++ Compiler pour Python 2.7. J'ai également ajouté son chemin dans mes variables d'environnement, mais cela n'a pas fonctionné non plus. Ensuite, j'ai désinstallé python 3.4.2 et supprimé tous les dossiers de python, et installé python 2.7. Enfin, j’ai lancé pip en utilisant powershell et j’ai pu installer le paquet requis, à savoir, flask-user, en utilisant.

pip install flask-user
0
Waqar Detho

Il y a un cas de confusion pour cela sur les fenêtres. Si vous suivez le conseil pour installer les fenêtres 2007 et que vous obtenez toujours cette erreur en faisant python setup.py install directement, il se peut que setup.py utilise l'ancienne version des outils de configuration.

En particulier, le code qui pointe les fenêtres vers le bon emplacement pour le compilateur Windows installé se trouve dans la méthode __init__ de la bibliothèque setuptools, ce qui signifie que vous devez utiliser le module setuptools dans votre setup.py. Certaines méthodes d’appel setup.py plus anciennes directement à partir de distutils.core. Si tel est le cas, setup.py ne trouvera jamais le compilateur Windows installé. Cela peut être corrigé en écrivant simplement import setuptools comme première ligne du fichier setup.py.

Référence: https://bugs.python.org/issue23246 : Regardez à peu près à mi-chemin pour la citation de steve dower:

Setuptools a le code pour trouver le package du compilateur. Nous l'avons délibérément placé ici plutôt que dans distutils pour nous assurer que plus de gens l'obtiendraient . Je devrais probablement porter la vérification supplémentaire dans la version 2.7.10, mais la solution immédiate consiste à importer setuptools.

0
phil_20686

Installez Visual Studio Express 2008 (9.0) à partir d’ici: http://go.Microsoft.com/?linkid=7729279

C'est ce qui l'a réglé pour moi.

0
wordsforthewise