web-dev-qa-db-fra.com

erreur: impossible de trouver vcvarsall.bat

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

pip install dulwich

Mais je reçois un message d'erreur cryptique:

error: Unable to find vcvarsall.bat

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

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

Mise à jour : Les commentaires précisent que les instructions fournies ici peuvent être dangereuses. Pensez à utiliser l'édition Visual C++ 2008 Express ou le compilateur spécialement conçu compilateur Microsoft Visual C++ pour Python ( détails ) et NOT en utilisant la réponse originale ci-dessous. Le message d'erreur d'origine signifie que la version requise de Visual C++ n'est pas installée.


Pour les installations Windows:

Lors de l'exécution de setup.py pour l'installation de packages, Python 2.7 recherche Visual Studio 2008 installé. Vous pouvez tromper Python pour utiliser un Visual Studio plus récent en définissant le chemin correct dans VS90COMNTOOLS variable d’environnement 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%

AVERTISSEMENT: 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.

682
fmuecke

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

  1. J'ai Python 2.6 déjà installé.
  2. J'ai installé mingw32 sur C:\programs\mingw\
  3. Ajoutez le répertoire bin de mingw32 à votre variable d’environnement: ajoutez c:\programs\MinGW\bin; à CHEMIN
  4. Editer (créer si non existant) distutils.cfg fichier situé à C:\Python26\Lib\distutils\distutils.cfg pour être:

    [build]
    compiler=mingw32
    
  5. Maintenant, lancez easy_install.exe amara.

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

225
ninMonkey

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

221
VolodymyrB

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

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

    Il est important d'utiliser la version correspondante du compilateur Visual C++ avec lequel Python a été compilé avec puisque distilutils Le get_build_version de = empêche le mélange des versions ( selon l'avertissement de Piotr ).

    • 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. Utilisez le tableau ci-dessous[1] pour faire correspondre la version interne de VC++ à 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.
    Les notes supplémentaires pour des versions spécifiques de VC++ sont répertoriées ci-dessous.

    Notes pour Visual Studio C++ 2008

    Pour uniquement les compilateurs 32 bits, téléchargez Visual Studio C++ 2008 Express Edition .

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

    • Décochez tout sauf Developer Tools >> Visual C++ Compilers pour gagner du temps et de l'espace disque lors de l'installation d'outils SDK dont vous n'avez normalement pas besoin.

    Notes pour Visual Studio C++ 2010

    Selon Microsoft, si vous avez installé Visual Studio 2010 SP1, il est possible que les compilateurs et les bibliothèques de VC++ aient été supprimés.
    Si tel 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 compilation 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 Build Tools for Visual Studio 2017 .

    Suggestion : Si vous avez une installation Python 32 et 64 bits, vous pouvez également utiliser virtualenv pour créer des environnements Python distincts afin que vous puissiez utiliser l'un ou l'autre à la fois sans modifier votre chemin pour choisir la version Python à utiliser.

Selon @ srodriguex , vous pourrez peut-être ignorer le chargement manuel du fichier de commandes (étapes 4 à 6) en copiant à la place quelques fichiers de commandes où Python effectue la recherche en suivant - cette réponse . Si cela ne fonctionne pas, voici les étapes suivantes qui ont initialement fonctionné pour moi.

  1. Ouvrez un cmd.exe

  2. Avant de essayer d’installer quelque chose qui nécessite des extensions C, exécutez le fichier de commandes suivant pour charger l’environnement du compilateur VC++ dans la session (c’est-à-dire les variables d’environnement, le chemin du compilateur, etc.).

    Exécuter:

    • Compilateurs 32 bits:

      Remarque : 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"

    • Compilateurs 64 bits:

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

      Remarque : Oui, les compilateurs 64 bits natifs sont dans Program Files (x86). Ne me demande pas pourquoi.
      En outre, si vous vous demandez quelle est la différence entre vcvars64.bat et vcvarsx86_AMD64.bat ou, plus important encore, la différence entre AMD64 et x86_AMD64, les premiers sont pour le natif Les outils de compilateur 64 bits et ce dernier sont les compilateurs croisés 64 bits pouvant s'exécuter sur une installation Windows 32 bits.

    Mise à jour:
    Si pour quelque raison que ce soit vous obtenez error: ... was unexpected at this time. où le ... est une série de caractères, vous devez vérifier que la variable de chemin d'accès ne comporte pas de caractères superflus, tels que des citations supplémentaires ou des valeurs parasites. personnages. Le fichier de commandes ne pourra pas mettre à jour votre chemin de session s'il ne le comprend pas du tout.

  3. Si cela se passe bien, vous devriez recevoir l'un des messages suivants en fonction de la version de VC++ et de la commande que vous avez exécutées:

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

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

  4. Maintenant , lancez la configuration via python setup.py install ou pip install pkg-name

  5. Espérez et croisez les doigts pour que les planètes soient correctement alignées afin que VC++ puisse coopérer.

157
Josh Bowden

Que se passe-t-il? Les modules Python peuvent être une partie écrite en C ou C++ (généralement pour la vitesse). Si vous essayez d'installer un tel paquet avec Pip (ou setup.py), il doit compiler ce C/C++ à partir de la source. Hors de la boîte, Pip va vous prendre pour le compilateur Microsoft Visual C++ installé. Si vous ne l'avez pas, vous verrez ce message d'erreur cryptique "Erreur: Impossible de trouver vcvarsall.bat".

La solution préconisée consiste à installer un compilateur C/C++, Microsoft Visual C++ ou MinGW (projet à code source ouvert). Cependant, l’installation et la configuration sont extrêmement difficiles. (Edit 2014: Microsoft a publié un compilateur C++ spécial pour Python 2.7)

La solution la plus simple consiste à utiliser les programmes d'installation Windows de Christoph Gohlke (.msi) pour les packages Python populaires. Il construit des installateurs pour Python 2.x et 3.x, 32 bits et 64 bits. Vous pouvez les télécharger à partir de http://www.lfd.uci.edu/~gohlke/pythonlibs/


Si vous aussi vous pensez que "Erreur: Impossible de trouver vcvarsall.bat" est un message ridiculement cryptique et inutile, veuillez commenter le bogue à l'adresse http://bugs.python.org/issue2943 pour le remplacer par un message plus utile et plus convivial.

À titre de comparaison, Ruby est fourni avec un gestionnaire de paquets Gem et propose un compilateur C/C++ quasi officiel, DevKit. Si vous essayez d’installer un paquet sans ce paquet, vous voyez ce message utile et utile:

Veuillez mettre à jour votre PATH pour inclure des outils de compilation ou télécharger le DevKit à partir de http://rubyinstaller.org/downloads et suivez les instructions fournies à http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

Vous pouvez lire un discours plus long sur Python packaging à https://stackoverflow.com/a/13445719/284795

71
Colonel Panic

Vous devrez installer un compilateur Microsoft compatible avec le compilateur utilisé pour construire Python. Cela signifie que vous avez besoin de Visual C++ 2008 (ou plus récent, avec quelques modifications ).

Microsoft fournit maintenant un compilateur et des en-têtes groupés juste pour pouvoir compiler les extensions Python, à l'URL mémorable:

Compilateur Microsoft Visual C++ pour Python 2.7

http://aka.ms/vcpython27

C'est un paquet relativement petit; 85 Mo à télécharger, installable sans privilèges d'administrateur, aucun redémarrage requis. Le nom est un peu trompeur, le compilateur fonctionnera pour toute version de Python initialement compilée avec Visual C++ 2008, et pas seulement Python 2.7.

Si vous démarrez une invite interactive Python _ ou imprimez sys.version, recherchez la chaîne MSC version; s'il s'agit de MSC v.1500, vous pouvez utiliser cet outil.

De la annonce originale à la liste de distutils :

Microsoft a publié un package de compilateur pour Python 2.7 afin de permettre aux utilisateurs de créer et de distribuer plus facilement leurs modules d’extension C sous Windows. Le compilateur Microsoft Visual C++ pour Python 2.7 (a.k.a. VC9) est disponible à partir de: http://aka.ms/vcpython27

Ce paquet contient tous les outils et les en-têtes nécessaires à la construction de modules d'extension C pour Python 2.7 32 bits et 64 bits (notez que certains modules d'extension nécessitent des dépendances tierces telles que OpenSSL ou libxml2 non incluses). . Les autres versions de Python construites avec Visual C++ 2008 sont également prises en charge. Par conséquent, "Python 2.7" est une simple publicité - il fonctionnera parfaitement avec les versions 2.6 et 3.2.

Notez que vous devez avoir setuptools 6.0 ou plus récent installé (répertorié dans la configuration requise de la page de téléchargement). Le projet que vous installez doit utiliser setuptools.setup(), et non distutils, sinon la détection automatique ne fonctionnera pas.

Microsoft a déclaré vouloir conserver l'URL stable afin que les scripts automatisés puissent s'y référer facilement.

63
Martijn Pieters

Je viens d'avoir ce même problème, je vais donc raconter mon histoire ici en espérant que cela aidera quelqu'un d'autre aux mêmes problèmes 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'essaye d'installer PyCrypto.

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

error: Unable to find vcvarsall.bat

Il est facile de résoudre le problème après avoir recherché Google en spécifiant mingw comme compilateur de choix:

setup.py install build --compiler=mingw32

Le problème est que j'ai alors une erreur différente:

configure: error: cannot run C compiled programs.

Il se trouve que mon anti-virus bloquait l'exécution d'un fichier .exe récemment compilé. Je viens de désactiver le "bouclier résident" anti-virus et je suis passé à l'erreur suivante:

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

Cela résout le problème: "Installez une version légèrement plus ancienne de MinGW ou modifiez distutils\cygwinccompiler.py dans votre répertoire Python pour supprimer toutes les instances de -mno-cygwin." (de ici )

Maintenant, je peux enfin commencer à travailler.

54
fpessoa

On dirait que sa recherche de compilateurs VC, vous pouvez donc essayer de mentionner le type de compilateur avec -c mingw32, puisque vous avez msys

python setup.py install -c mingw32
23
YOU

J'ai python 2.73 et Windows 7. La solution qui a fonctionné pour moi était la suivante:

  1. Ajout du répertoire bin de mingw32 à la variable d'environnement: append CHEMIN avec C:\programs\mingw\bin;
  2. Créé distutils.cfg situé à C:\Python27\Lib\distutils\distutils.cfg contenant:

    [build]
    compiler=mingw32
    

Pour que MinGW ne reconnaisse plus le drapeau -mno-cygwin, supprimez-le dans les lignes 322 à 326 de C:\Python27\Lib\distutils\cygwincompiler.py.

  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))
20
user61629

Regardez dans le fichier setup.py du paquet que vous essayez d'installer. S'il s'agit d'un package plus ancien, il est possible que vous importiez distutils.core.setup() plutôt que setuptools.setup().

J'ai couru à cela (en 2015) avec une combinaison de ces facteurs:

  1. Le compilateur Microsoft Visual C++ pour Python 2.7 à partir de http://aka.ms/vcpython27

  2. Un ancien paquet qui utilise distutils.core.setup()

  3. Essayer de faire python setup.py build plutôt que d'utiliser pip.

Si vous utilisez une version récente de pip, il forcera (monkeypatch) le paquet à utiliser setuptools, même si son setup.py fait appel à distutils. Toutefois, si vous n'utilisez pas pip et que vous ne faites que python setup.py build, le processus de construction utilisera distutils.core.setup(), qui ne connaît pas l'emplacement d'installation du compilateur.


Solution

Étape 1: Ouvrez l'invite de commande Visual C++ 2008 appropriée.

Ouvrez le menu Démarrer ou l'écran de démarrage et recherchez "Invite de commande Visual C++ 2008 32 bits" (si votre python est 32 bits) ou "Invite de commande Visual C++ 2008 64 bits" (si votre python est 64 bits). Exécuter. La commande Invite doit indiquer Visual C++ 2008 ... dans la barre de titre.

Étape 2: Définissez les variables d'environnement.

Définissez ces variables d’environnement dans la commande Invite que vous venez d’ouvrir.

SET DISTUTILS_USE_SDK=1
SET MSSdk=1

Référence http://bugs.python.org/issue23246

Étape 3: Construisez et installez

cd au paquet que vous voulez construire et exécutez python setup.py build, puis python setup.py install. Si vous voulez installer dans un virtualenv, activez-le avant de le construire.

16
Christian Long

Peut-être que quelqu'un pourrait être intéressé, les éléments suivants ont fonctionné pour moi pour le paquet py2exe. (Windows 7 64 bits et portable python 2.7, Visual Studio 2005 Express avec Windows SDK pour Windows 7 et .NET Framework 4)

set VS90COMNTOOLS=%VS80COMNTOOLS%

ensuite:

python.exe setup.py install
9
Stefano Fenu

J'ai passé presque deux jours à trouver une solution à ce problème dans mon python 3.4 version 64 bits: Python 3.4.3 (v3.4.3: 9b73f1c3e601, 24 février 2015, 22:44 : 40) [MSC v.1600 64 bits (AMD64)] sur win32

Solution 1, difficile: (avant de lire ceci, lisez d'abord la Solution 2 ci-dessous) Enfin, voici ce qui m'a aidé:

  1. installer Visual C++ 2010 Express
  2. installer SDK Microsoft Windows v7.1 pour Windows 7
  3. créer manuellement le fichier vcvars64.bat dans C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64 qui contient CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 ou un autre chemin, en fonction de l'endroit où vous avez installé le vôtre
  4. (cela semble être facultatif) install Microsoft Visual Studio 2010 Service Pack 1 avec mise à jour du compilateur Microsoft Visual C++ 2010 Service Pack 1 pour le Kit de développement logiciel (SDK) Windows 7.1
  5. après cela j'ai essayé de pip install numpy mais j'ai reçu l'erreur suivante:

    File "numpy\core\setup.py", line 686, in get_mathlib_info
    raise RuntimeError("Broken toolchain: cannot link a simple C program")
    RuntimeError: Broken toolchain: cannot link a simple C program
    

    J'ai changé mfinfo en None dans C:\Python34\Lib\distutils\msvc9compiler.py par ceci https://stackoverflow.com/a/23099820/4383472

  6. enfin après la commande pip install numpy, mon antivirus avast a tenté d'interférer dans le processus d'installation, mais je l'ai rapidement désactivé

La compilation de numpy a pris beaucoup de temps. J'ai même pensé qu'il y avait une erreur, mais finalement tout s'est bien passé.

Solution 2, facile: (Je sais que cette approche a déjà été mentionnée dans un vote très votant réponse , mais je le répète depuis c’est vraiment plus facile) Après avoir parcouru tout ce travail, j’ai compris que le meilleur moyen pour moi est d’utiliser des binaires déjà précompilés de http://www.lfd.uci.edu/~gohlke/pythonlibs/ à l'avenir. Il y a très peu de chances pour que j'aie besoin d'un paquet (ou d'une version d'un paquet) que ce site ne contient pas. Le processus d'installation est également beaucoup plus rapide de cette façon. Par exemple, pour installer numpy:

  1. télécharger numpy‑1.9.2+mkl‑cp34‑none‑win_AMD64.whl (si vous avez Python 3.4 64 bits) de ce site
  2. in command command ou powershell l'installer avec pip pip install numpy‑1.9.2+mkl‑cp34‑none‑win_AMD64.whl (ou le chemin d'accès complet au fichier, en fonction de l'ouverture de l'invite)
8
Bad

J'ai rencontré ce problème lorsque j'ai essayé d'installer la bibliothèque numpy sur mon python 3.5. La solution consiste à installer VS2015. J'avais VS2008, 2012, 2013, dont aucun n'est compatible avec python 3.5. Apparemment, la version la plus récente de python dépend des versions les plus récentes de VS.

Assurez-vous également que C++ Common Tools est installé avec Visual Studio.

enter image description here

7
D.G.

Je voulais exécuter pysph sous Windows 10 sous Python 2.7 et je n'ai pas trouvé vcvarsall.bat (de distutils).

Ma solution était la suivante:

Installez Microsoft Visual C++ pour Python 2.7 (comme suggéré par Michael)

Sous Windows 10, il a été installé (mon nom d’utilisateur est Andreas):

C:\Users\Andreas\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0

Définissez la variable d'environnement VS90COMNTOOLS sur le chemin d'installation de Visual C++ pour Python 2.7 (voir le chemin ci-dessus).

Si cela ne fonctionne toujours pas, modifiez-le dans le module

C:/Python27/lib/distutils

le fichier msvc9compiler.py. Recherchez la fonction find_vcvarsall et effectuez les modifications suivantes.

Remplacez la ligne:

productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")

avec

productdir = os.path.join(toolsdir)

C’est ici que vcvarsall.bat réside dans mon cas (cochez, où vcvarsall.bat est dans votre installation).

7
chiefenne

Vous pouvez télécharger gratuitement Visual C++ 2008 Express Edition à partir de http://go.Microsoft.com/?linkid=7729279 , qui définira la variable d'environnement VS90COMNTOOLS lors de l'installation et, par conséquent, à l'aide d'un compilateur compatible.

Comme @PiotrDobrogost l'a mentionné dans un commentaire, sa réponse à cette autre question explique en détail la raison pour laquelle Visual C++ 2008 est une bonne chose à construire, mais cela peut changer à mesure que la version Windows de Python passe à des versions plus récentes. de Visual Studio: Construction de lxml pour Python 2.7 sous Windows

6
Eric Smith

J'ai essayé toutes les réponses ci-dessus et j'ai constaté qu'elles ne fonctionnaient pas. J'utilisais peut-être Windows 8 et j'avais installé Visual Studio 2012. Dans ce cas, c'est ce que vous faites.

Le fichier vcvarsall.bat se trouve ici: C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC

Il suffit de sélectionner le fichier et de le copier.

Ensuite, allez dans ce répertoire: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools

et collez le fichier. Et puis, tout devrait aller bien.

6
Games Brainiac

J'ai eu ce problème en utilisant Python 3.4.1 sur Windows 7 x64 , et malheureusement les paquets dont j'avais besoin ne possédaient pas d'exe ou de roulettes appropriés que je pouvais utiliser. . Ce système nécessite quelques 'solutions de contournement', détaillées ci-dessous (et TLDR en bas ).

En utilisant les informations dans réponse de Jaxrtech ci-dessus , j'ai déterminé que j'avais besoin de Visual Studio C++ 2010 (sys.version return MSC v.1600). J'ai donc installé Visual C++ 2010 Express à partir du lien. dans sa réponse, qui est http://go.Microsoft.com/?linkid=9709949 . J'ai tout installé avec les mises à jour, mais comme vous pouvez le lire ci-dessous, c'était une erreur. Seule la version originale d'Express doit être installée pour le moment (aucune mise à jour).

vcvarsall.bat était maintenant présent, mais il y avait une nouvelle erreur lors de l'installation du paquet, query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']. Il y a d'autres questions stackoverflow avec cette erreur, telles que Erreurs lors de la construction/installation du module C pour Python 2.7

J'ai déterminé à partir de cette réponse que 2010 Express installait uniquement des compilateurs 32 bits. Pour obtenir des compilateurs 64 bits (et autres), vous devez installer Windows 7.1 SDK. Voir http://msdn.Microsoft.com/en-us/windowsserver/bb980924.aspx

Cela ne s’installerait cependant pas pour moi et le programme d’installation a renvoyé l’erreur installation failed with return code 5100. J'ai trouvé la solution sur le lien suivant: http://support.Microsoft.com/kb/2717426 . En résumé, si des versions plus récentes de x86 et x64 de Microsoft Visual C++ 2010 Redistributable sont installées, elles entrent en conflit avec celles du programme d'installation du SDK et nécessitent une désinstallation préalable.

Le SDK s’est alors installé, mais j’ai remarqué que vcvars64.bat n’existait toujours pas dans C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin, ni dans ses sous-dossiers. vcvarsall.bat exécute le fichier de commandes vcvars64. Par conséquent, sans lui, le package python ne serait toujours pas installé (j'ai oublié l'erreur affichée à ce moment-là).

J'ai ensuite trouvé des instructions ici: http://www.cryptohaze.com/wiki/index.php/Windows_7_Build_Setup#Download_VS_2010_and_Windows_SDK_7.1 En suivant les instructions, j'avais déjà installé Express et 7.1 SDK, donc installé SDK 7.1 SP1 et corrigé le fichier d’en-tête manquant. J'ai ensuite créé manuellement vcvars64.bat avec le contenu CALL setenv /x64. Je vais coller toutes ces instructions ici, afin qu'elles ne se perdent pas.

L'étape 1 consiste à télécharger Visual Studio Express 2010.

http://www.Microsoft.com/visualstudio/en-us/products/2010-editions/express est un bon point de départ. Téléchargez le programme d'installation et exécutez-le (vc_web.exe). Vous n'avez pas besoin du téléchargement supplémentaire de SQL 2008.

Vous aurez également besoin du kit de développement logiciel Windows (version 7.1 actuellement) pour les compilateurs 64 bits - à moins que vous ne souhaitiez créer des versions 32 bits uniquement, qui ne sont pas totalement prises en charge ...

http://www.Microsoft.com/en-us/download/details.aspx?id=8279 est un bon point de départ pour télécharger ceci - vous voudrez exécuter le fichier winsdk_web.exe une fois téléchargé. !

L'installation par défaut ici est très bien.

Enfin, téléchargez et installez la mise à jour Windows SDK 7.1 SP1: http://www.Microsoft.com/en-us/download/details.aspx?id=4422

Et, pour réparer le fichier d’en-tête manquant, VS2010 SP1. http://www.Microsoft.com/downloads/en/confirmation.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5

Et putain, corrigez le fichier de commandes manquant pour VS2010 Express. Cela devient carrément absurde.

Dans C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64, créez "vcvars64.bat" avec les éléments suivants (vous devrez exécuter l'exécution en tant qu'administrateur):

CALL setenv/x64

Mon package python n'a toujours pas été installé (impossible de se souvenir de l'erreur). J'ai ensuite trouvé quelques instructions (copiées ci-dessous) pour utiliser l'invite de commande spéciale du SDK 7.1, voir: https://mail.python.org/pipermail/distutils-sig/2012-February/018300.html

Peu importe cette question. Quelqu'un ici a remarqué cet élément dans le menu: Démarrer-> Tous les programmes-> SDK Microsoft Windows v7.1 -> Invite de commande du SDK Windows 7.1

Ceci exécute un travail par lots qui apparaît pour configurer un environnement de travail pour le compilateur. A partir de cette invite, vous pouvez taper "setup.py build" ou "setup.py install".

J'ai ouvert l'invite de commandes Windows SDK 7.1 comme indiqué et je l'ai utilisée pour exécuter easy_install sur le package python. Et enfin, le succès!


TLDR;

  1. Installez Visual Studio Express 2010 (de préférence sans les redistribuables ni le serveur SQL mis à jour).
  2. Installer le SDK Windows 7.1
  3. Instal SDK 7.1 SP1, mise à jour et correction du fichier d’en-tête VS2010 SP1 (cette étape peut ne pas être nécessaire).
  4. Créez manuellement C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64\vcvars64.bat avec le contenu CALL setenv /x64
  5. Démarrer-> Tous les programmes-> SDK Microsoft Windows v7.1 -> Invite de commande Windows SDK 7.1 pour ouvrir l'invite de commande spéciale x64, qui peut ensuite être utilisée avec python/easy_install/pip/etc (y compris celles de virtual_envs).
6
neRok

Les étapes ci-dessous ont corrigé ce problème pour moi. J'essayais de créer une configuration avec l'extension cython.

  1. Installer le compilateur Microsoft Visual C++ pour Python 2.7
  2. L'emplacement d'installation par défaut serait @ C:\Utilisateurs\PC-utilisateur\AppData\Local\Programmes\Commun\Microsoft\Visual C++ pour Python. Cela pourrait en fait résoudre le problème, tester une fois avant de poursuivre.
  3. En cas d'échec, vérifiez où se trouve le fichier python _vcvarsall.bat dans VC++.
  4. Ouvrez le fichier msvc9compiler.py du package distutils dans le bloc-notes.
  5. Dans ma boîte, c'était @ C:\Anaconda2\Lib\distutils\msvc9compiler.py dans la fonction find_vcvarsall de ce fichier, déterminez la version de VC en imprimant l'argument de la version. Pour Python2.7, il sera probablement de 9,0.
  6. Créez maintenant une variable d'environnement VS90COMNTOOLS, pointant vers C:\Utilisateurs\PC-utilisateur\AppData\Local\Programmes\Commun\Microsoft\Visual C++ pour Python\9.0\VC\bin
  7. Pour une raison quelconque, distutils s'attend à ce que le fichier vcvarsall.bat soit dans le répertoire VC, mais VC++ pour python tools l'a à la racine de la version 9.0. Pour résoudre ce problème, supprimez "VC" de la path.join (environ autour de la ligne 247)

    #productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC") productdir = os.path.join(toolsdir, os.pardir, os.pardir)

Les étapes ci-dessus ont résolu le problème pour moi.

4
Riyas Deen

Le moyen le plus simple de résoudre ce problème en 2016 consiste à installer Chocolatey, puis le package vcpython27. Powershell ouvert:

> iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
> choco install python2 -y
> choco install vcpython27 -y
3
Chris S

Le compilateur Microsoft Visual C++ pour Python 2.7 sur http://www.Microsoft.com/en-us/download/details.aspx?id=44266 n'est-il pas une solution?

3
Michael

J'ai essayé plusieurs solutions mais une seule a fonctionné pour moi, l'installation de Microsoft Visual Studio 2008 Express C++.

J'ai eu ce problème avec un module Python 2.7 écrit en C (yEnc, qui a d'autres problèmes avec MS VS). Notez que Python 2.7 est construit avec la version MS VS 2008, pas 2010!

Bien que ce soit gratuit, il est assez difficile à trouver car MS promeut VS 2010. Néanmoins, les liens très directs officiels de MSDN fonctionnent toujours: check https://stackoverflow.com/a/15319069/2227298 pour les liens de téléchargement.

3
KrisWebDev

Si vous avez déjà installé

pip install --global-option build_ext --global-option --compiler=mingw32 packagename

fonctionne, forçant pip à construire en utilisant le compilateur mingw au lieu de celui de Microsoft. Voir ici https://github.com/pypa/pip/issues/18 pour plus de détails (dernier post).

3
Nicolas78

J'ai eu le même problème et l'ai résolu pour le moment.

"Google" m'a dit que je devais installer "Compilateur Microsoft Visual C++ pour Python 2.7". J'installe non seulement l'outil, mais également Visual C++ 2008 Reditributable, mais cela n'a pas aidé. J'ai ensuite essayé d'installer Visual C++ 2008 Express Edition. Et le problème est parti!

Essayez simplement d'installer Visual C++ 2008 Express Edition!

2
Vova

appeler import setuptools permettra de corriger distutils pour forcer la compatibilité avec Visual Studio. L'appel de vcvars32.bat manuellement permettra de configurer l'environnement virtuel et d'éviter d'autres erreurs courantes du compilateur. Pour VS 2017, le fichier se trouve à l'adresse

"C:\Fichiers de programme (x86)\Microsoft Visual Studio\2017\Communauté\VC\Auxiliary\Build\vcvars32.bat"

Voici le script d’installation que j’utilise pour compiler rapidement des fichiers .pyx en .pyd: (Remarque: il utilise le module tiers send2trash

# cython_setup.py
import sys, os, time, platform, subprocess
from setuptools import setup, find_packages
from Cython.Build import cythonize
from traceback import format_exc

# USAGE:
#
#   from cython_setup import run
#   run(pyx_path)

# vcvars = r"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"

# NOTE: to use visual studio 2017 you must have setuptools version 34+
vcvars = r"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars32.bat"


def _build_ext():
    try:
        pyx_path = sys.argv.pop(-1)
        pyx_path = os.path.abspath(pyx_path)
        if not os.path.exists(pyx_path):
            raise FileNotFoundError(f"{pyx_path} does not exist")
        project_name = sys.argv.pop(-1)
        os.chdir(os.path.abspath(os.path.dirname(pyx_path)))

        print("cwd: %s" % os.getcwd())
        print(os.path.abspath("build"))
        setup(
            name=project_name,
            # cmdclass = {'build_ext': build_ext},
            packages=find_packages(),
            # ext_modules=cythonize(extensions)
            ext_modules=cythonize(pyx_path,
                                  compiler_directives={'language_level': 3, 'infer_types': True, 'binding': False},
                                  annotate=True),
            # include_dirs = [numpy.get_include()]
            build_dir=os.path.abspath("build")
        )
    except:
        input(format_exc())


def retry(func):
    def wrapper(*args, **kw):
        tries = 0
        while True:
            try:
                return func(*args, **kw)
            except Exception:
                tries += 1
                if tries > 4:
                    raise
                time.sleep(0.4)

    return wrapper


@retry
def cleanup(pyx_path):
    from send2trash import send2trash
    c_file = os.path.splitext(pyx_path)[0] + ".c"
    if os.path.exists(c_file):
        os.remove(c_file)

    if os.path.exists("build"):
        send2trash("build")


def move_pyd_files(pyx_path):
    pyx_dir = os.path.dirname(pyx_path)
    build_dir = os.path.join(pyx_dir, "build")
    if not os.path.exists(build_dir):
        raise RuntimeError(f"build_dir {build_dir} did not exist....")
    found_pyd = False
    for top, dirs, nondirs in os.walk(build_dir):
        for name in nondirs:
            if name.lower().endswith(".pyd") or name.lower().endswith(".so"):
                found_pyd = True
                old_path = os.path.join(top, name)
                new_path = os.path.join(pyx_dir, name)
                if os.path.exists(new_path):
                    print(f"removing {new_path}")
                    os.remove(new_path)
                print(f"file created at {new_path}")
                os.rename(old_path, new_path)
    if not found_pyd:
        raise RuntimeError("Never found .pyd file to move")

def run(pyx_path):
    """
    :param pyx_path:
    :type pyx_path:
    :return: this function creates the batch file, which in turn calls this module, which calls cythonize, once done
    the batch script deletes itself... I'm sure theres a less convoluted way of doing this, but it works
    :rtype:
    """
    try:
        project_name = os.path.splitext(os.path.basename(pyx_path))[0]
        run_script(project_name, os.path.abspath(pyx_path))
    except:
        input(format_exc())


def run_script(project_name, pyx_path):
    dirname = os.path.dirname(pyx_path)
    # ------------------------------
    os.chdir(dirname)
    if os.path.exists(vcvars):
        #  raise RuntimeError(
        # f"Could not find vcvars32.bat at {vcvars}\nis Visual Studio Installed?\nIs setuptools version > 34?")
        subprocess.check_call(f'call "{vcvars}"', Shell=True)

    cmd = "python" if platform.system() == "Windows" else "python3"
    subprocess.check_call(f'{cmd} "{__file__}" build_ext "{project_name}" "{pyx_path}"', Shell=True)
    move_pyd_files(pyx_path)
    cleanup(pyx_path)


if len(sys.argv) > 2:
    _build_ext()
2
user2682863

Je ne sais pas s'il est trop tard, mais j'ai trouvé compilateur Microsoft Visual C++ pour Python 2.7 qui lit

Le message d'erreur typique que vous recevrez si vous avez besoin de ce compilateur est Impossible de trouver vcvarsall.bat

J'espère que cela t'aides!

2
mkamioner

Avec Python 3.4, la dépendance concerne Visual Studio 2010. L'installation de Visual C++ 2010 Express a résolu le problème pour moi.

Inciter à utiliser les installations VS 2008 ou 2013 qui ne fonctionnaient pas.

1
gmjonker

J'ai eu la même erreur (que je trouve idiote et pas vraiment utile que les messages d'erreur disparaissent) et j'ai continué à avoir des problèmes, malgré la disponibilité d'un compilateur C.

Surprenant, ce qui a fini par travailler pour moi était tout simplement mise à niveau de pip et setuptools vers la version la plus récente. J'espère que cela aide quelqu'un d'autre là-bas.

1
cbrendanprice

La réponse donnée par @monkey est l’une des réponses correctes, mais elle est incomplète.

Si vous souhaitez utiliser MinGW , vous devez sélectionner C, C++ ainsi que les autres outils de développement suggérés au cours du processus d'installation de MinGW pour obtenir également le fichier "make.exe".

Vous devez également définir le chemin d'accès à make.exe dans env.

Pour compléter sa réponse, voici les étapes:

  1. Ajoutez le répertoire bin de mingw32 à vos variables d'environnement
  2. Ajouter C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin; au CHEMIN
  3. Editez (créez s'il n'existe pas) le fichier distutils.cfg situé en C:\Python26\Lib\distutils\distutils.cfg pour être:

    [build]
    compiler=mingw32
    

Assurez-vous que les variables d'environnement sont définies en ouvrant un nouveau cmd.exe.

1
Olivier N

Installez Visual Studio 2015 Community Edition à partir de https://www.visualstudio.com , puis

pour Python 3.4

set VS100COMNTOOLS=%VS140COMNTOOLS% && pip install XX

1
Sergey11g

Liste exhaustive des versions de MS VС ++ et des variantes d'installation officiellement prises en charge par distutils (et certaines par setuptools) et comment les utiliser peuvent être trouvés à

https://wiki.python.org/moin/WindowsCompilers

Il spécifie également quelle version de VC++ est requise pour quelle version officielle de Win32 Python. Notez que MinGW n'est pas officiellement pris en charge (voir ci-dessous pour plus de détails).

En bref:

  • Pour chaque version, une version spécifique de Visual Studio fonctionne immédiatement.
  • Pour les SDK autonomes, il est généralement nécessaire d'exécuter l'installation à partir de l'invite du SDK (= définir les variables d'environnement).
    • Pour certains, cette exigence peut être levée par un ajustement unique qui n'a pas d'effets secondaires indésirables
  • Certaines versions inhabituelles de VC++ sont prises en charge par setuptools et non distutils.
  • MinGW est réputé "fonctionner", mais uniquement pour x86. https://bugs.python.org/issue4709 dit que les problèmes avec son support résident dans MinGW et que même x86 est lié à des problèmes depuis Python 3.5.
1
ivan_pozdeev

Vous pouvez utiliser easy_install au lieu de pip, cela fonctionne pour moi.

1
Abdul Majeed

solution la plus rapide :

Si vous avez python 3.4.x , la solution consiste simplement à installer VC++ 2010 car il est utilisé pour se compiler.

https://www.visualstudio.com/en-us/downloads#d-2010-express

ma version python est MSC v.1600 32 bits (intel)] sur win32

a bien fonctionné sous Windows8

1
DmitrySemenov

Si vous souhaitez installer pyodbc sur une machine Windows qui ne dispose pas de Visual Studio, une autre option consiste à installer manuellement pyodbc à l'aide de la distribution binaire.

Ceci est particulièrement utile si vous ne disposez pas des privilèges d’administrateur sur la machine sur laquelle vous travaillez et tentez de configurer un virtualenv .

Pas:

  1. Téléchargez le dernier programme d'installation Windows à partir de ici (pyodbc-X.X.X.win-Y-py2.7.exe)
  2. Ouvrez l'exécutable du programme d'installation à l'aide de 7-Zip (ou WinRAR ou autre).
  3. Extrayez pyodbc.pyd et pyodbc-X.X.X-py2.7.Egg-info et placez-les dans [python installation directory or virtualenv]\Lib\site-packages
  4. Il n'y a pas d'étape 4 :)
1
Dane B

Je suis essayé toutes les réponses ci-dessus, mais pas travaillé pour moi. J'utilisais Windows 10 et j'avais installé Visual Studio 2010. Dans mon cas, il faut ajouter vcvars64.bat à C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64.

voici vcvars64.bat:

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

Installez Microsoft SDK 7.1 si vous ne l'installez pas et réexécutez pip install dulwich

1
xavierzhao

Allez ici: http://docs.continuum.io/anaconda/install.html#windows-install

Il y a des instructions pour installer anaconda qui fournira une interface graphique et une installation silencieuse de la majorité des paquets qui semblent être à l’origine de ce problème http://www.scipy.org/ . Je connais la solution pour la version 2.7 ici https://www.Microsoft.com/en-us/download/details.aspx?id=44266 mais je n'ai pas vu d'option pour Python 3.4. Après avoir téléchargé et installé Anaconda, vous devriez pouvoir importer la majorité des paquets dont vous avez besoin depuis scipy.

J'espère que cela aide certaines personnes. Cela m'a pris 45 minutes de postes et de sites à récurer.

EDIT: Je voulais juste noter qu’un lien Python34 se trouve sur la page GUI à côté des symboles du système d’exploitation.

1
jakden

J'ai eu la même erreur lorsque j'ai essayé d'installer pandas dans Windows 10. Après avoir recherché plusieurs solutions, j'ai fini par utiliser Wheel.

Tout d’abord, mettez à niveau pip vers la dernière version:

easy_install install -U pip

Deuxièmement, installez la roue:

pip install wheel

Troisièmement, téléchargez le fichier whl de votre paquet et installez-le:

pip install [xxx].whl

Jusqu'ici, je pense que wheel est le meilleur moyen d'installer Python paquets sur Windows.

0
Andong Zhan

http://www.stickpeople.com/projects/python/win-psycopg/

L'installation du fichier approprié à partir du lien ci-dessus a résolu mon problème.

Mention: Jason Erickson [[email protected]]. Il gère assez bien cette page pour les utilisateurs de Windows.

0
Rahul Bali
0
Francuz