erreur: impossible de trouver vcvarsall.bat

852

J'ai essayé d'installer le paquet 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'essaie d'installer le package manuellement:

> python setup.py install
running build_ext
building 'dulwich._objects' extension
error: Unable to find vcvarsall.bat
okada
la source
6
Pour référence future, il serait intéressant de voir sur quelle plateforme utilisez-vous cela.
viam0Zah
47
Si vous pensez qu'il s'agit d'un message d'erreur ridiculement cryptique et inutile, veuillez voter pour le bogue sur bugs.python.org/issue2943
Colonel Panic
48
Microsoft propose désormais une solution: microsoft.com/en-us/download/details.aspx?id=44266
Martijn Pieters
6
@MartijnPieters J'ai essayé de télécharger et d'installer le lien que vous avez fourni avec wheel et setuptools 7.0 mais cela ne fonctionne pas, je reçois le message: C:\Users\User\libfreenect\wrappers\python>python setup.py install running install running build running build_ext building 'freenect' extension error: Unable to find vcvarsall.bat
compski
4
Steve Dower (un gars de l'équipe Python de Microsoft) a écrit un article de blog sur ce sujet qui mérite d'être lu: blogs.msdn.microsoft.com/pythonengineering/2016/04/11/…
Cody Piersall

Réponses:

683

Mise à jour : les commentaires indiquent que les instructions ici peuvent être dangereuses. Envisagez d'utiliser l'édition Visual C ++ 2008 Express ou le compilateur Microsoft Visual C ++ spécialement conçu pour Python ( détails ) et n'utilisez PAS la réponse d'origine 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 les installations de packages, Python 2.7 recherche un Visual Studio 2008. Vous pouvez demander à Python d'utiliser un Visual Studio plus récent en définissant le chemin d'accès correct dans VS90COMNTOOLSla 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 Construire lxml pour Python 2.7 sur Windows pour plus de détails.

fmuecke
la source
21
Il l'a fait pour moi :(
fmuecke
8
@Gili: Il semble que ce problème soit dû aux espaces dans la variable, essayez de la mettre entre guillemets. Pour moi% VS100COMNTOOLS% = "C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ Tools"
legends2k
7
Cela ne fonctionnera pas pour beaucoup de choses, car Python s'appuie sur VS2008. Jetez un œil à cette réponse: stackoverflow.com/questions/6551724/…
shezi
182
ATTENTION!!! C'est une mauvaise réponse. Vous ne devez en aucun cas compiler l'extension Python C en utilisant un compilateur (version de) différent de celui utilisé pour compiler Python lui-même car ces deux (versions de) compilateurs auront probablement des bibliothèques d'exécution C incompatibles. Voir cette réponse pour plus de détails.
Piotr Dobrogost
72
Vous pouvez télécharger la version gratuite de Visual C ++ 2008 Express Edition à partir de go.microsoft.com/?linkid=7729279 , qui définira la variable d'environnement VS90COMNTOOLS lors de l'installation et, par conséquent, la génération avec un compilateur compatible.
Eric Smith
225

J'ai trouvé la solution. J'ai eu exactement le même problème et l'erreur lors de l'installation de 'amara'. J'avais installé mingw32, mais les distutils devaient être configurés.

  1. J'ai Python 2.6 qui était 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;au PATH
  4. Editez (créez s'il n'existe pas) le fichier distutils.cfg situé à C:\Python26\Lib\distutils\distutils.cfg:

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

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

ninMonkey
la source
45
Cela fonctionne très bien pour Python2.6, mais pour une raison quelconque, je ne peux pas le faire fonctionner sur Python2.7. Cela fonctionne si je télécharge la source de mon package et l'installe à l'aide de 'python setup.py install --compile = mingw32', mais pour une raison quelconque, easy_install ou pip essaie toujours de trouver vcvarsall.
Jonathan Hartley
2
J'ai enfin obtenu scikits.image à installer dans Python (x, y) 2.7 en ajoutant C:\msysgit\mingw\mingw32\binet C:\msysgit\mingw\binà l'utilisateur PATH et en redémarrant Spyder avant de pip installrecommencer
endolith
20
Il n'est jamais nécessaire de redémarrer en raison d'un changement de variable d'environnement. L'ouverture d'un nouveau processus cmd.exe suffit.
Tomalak
11
Je ne pouvais toujours pas résoudre ce problème. C'est l'erreur: gcc: error: unrecognized command line option '-mno-cygwin' error: Setup script exited with error: command 'gcc' failed with exit status 1aprèseasy_install.exe amara
utilisateur
5
@user, vous devez ouvrir ce fichier: C:\Python27\Lib\distutils\cygwincompiler.pyet en supprimer toutes les occurrences –mno-cygwin; c'est parce que les versions récentes de GCC ont supprimé l' –mno-cygwinoption et qu'elle ne devrait pas être là.
Zeinab Abbasimazar
220

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

VolodymyrB
la source
15
juste un conseil: vous pouvez installer le package de ce site dans virtualenv en exécutant easy_install binary_installer_built_with_distutils.exedans virtualenv, selon cette réponse .
yangzh
14
Chaque développeur de Windows Python devrait savoir à ce sujet
Lycéen
1
Vous pouvez également wheel convert ....exeinstaller ces installateurs puis les installer avec pip quand vous le souhaitez.
Zooba
3
Pour être plus précis, lfd.uci.edu/~gohlke/pythonlibs/#mysql-python et une fois téléchargé ouvert un terminal en tant qu'administrateur et exécutezpython -m pip install <filename>
arun
Holly mère de Dieu, c'est sur place. Fonctionne comme un charme, TY :)
Amir
162

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

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

    Il est important de d'utiliser la version correspondante du compilateur Visual C que Python a été compilé avec depuis distilutils l » get_build_versionempêche les versions de mélange ( par 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)

    Exemple de la ligne de commande montrant Python 2.7 compilé avec MSC v.1500 et Python 3.4.1 compilé avec MSC v.1600

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

    Notes pour Visual Studio C ++ 2008

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

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

    • Décochez tout sauf Developer Tools >> Visual C++ Compilerspour économiser du temps et de l'espace disque à partir de l'installation des outils SDK dont vous n'avez pas besoin autrement.

    Notes pour Visual Studio C ++ 2010

    Selon Microsoft, si vous avez installé Visual Studio 2010 SP1, il peut avoir supprimé les compilateurs et les bibliothèques pour VC ++.
    Si tel est le cas, téléchargez la 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 Visual Studio C ++ 2015 Build Tools .

    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 disposez à la fois d'une installation Python 32 et 64 bits, vous pouvez également utiliser virtualenv pour créer des environnements Python distincts afin de pouvoir utiliser l'un ou l'autre à la fois sans vous soucier de votre chemin pour choisir la version Python à laquelle utilisation.

Selon @srodriguex , vous pourrez peut-être ignorer le chargement manuel du fichier de commandes (étapes 4 à 6) en copiant plutôt quelques fichiers de commandes à l'endroit où Python 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 d'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 d'accès au compilateur, etc.).

    Exécuter:

    • Compilateurs 32 bits:

      Remarque : les installations Windows 32 bits auront uniquement 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 natifs 64 bits sont disponibles Program Files (x86). Ne me demandez pas pourquoi.
      De plus, si vous vous demandez quelle est la différence entre vcvars64.batet vcvarsx86_amd64.batou plus important encore la différence entre amd64et x86_amd64, les premiers sont pour les outils natifs du compilateur 64 bits et les seconds sont les compilateurs croisés 64 bits qui peuvent s'exécuter sur une installation Windows 32 bits .

    Mise à jour:
    si, pour une raison quelconque, vous obtenez error: ... was unexpected at this time.où se ...trouve une série de caractères, vous devez vérifier que votre variable de chemin n'a pas de caractères étrangers tels que des guillemets supplémentaires ou des caractères errants. Le fichier de commandes ne pourra pas mettre à jour votre chemin de session s'il ne peut pas le comprendre en premier lieu.

  3. Si cela s'est bien passé, vous devriez obtenir l'un des messages suivants selon la version de VC ++ et 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 la configuration via python setup.py installoupip install pkg-name

  5. Espérez et croisez les doigts que les planètes sont correctement alignées pour que VC ++ coopère.

Josh Bowden
la source
Je vous conseille pas assez que vous ne passez par la douleur de passer à 64 bits droite. Ce n'est qu'une question de temps avant que vous ayez besoin de plus de 4 Go d'espace d'adressage. Je parle d'une expérience douloureuse après avoir passé 32 bits car c'était beaucoup plus facile, puis avoir à désinstaller tout, y compris les dépendances et passer à 64 bits. Presque tout un week-end.
Thomas Browne,
1
Là encore, j'oublie combien de personnes vont devoir utiliser Python pour des tâches beaucoup plus importantes comme ça. Et @ThomasBrowne, je suis sûr que c'était un mal douloureux et inutile d'une expérience. J'examine la question et j'espère pouvoir trouver quelque chose. Le problème principal était que Visual Studio C ++ 2008 Express n'est pas livré avec un compilateur 64 bits, mais je suis sûr que c'est quelque part ici.
Josh Bowden
Je viens de le mettre à jour avec plus d'informations sur la façon d'obtenir également les compilateurs 64 bits si vous en avez besoin.
Josh Bowden
Dans mon cas, je suis l'étape 1 ci-dessus et j'ai ignoré le reste après cette réponse . Maintenant, je peux installer des packages en évitant la gêne d'exécuter .bat.
srodriguex
@srodriguex bien dans ce cas, il semble que Python suppose que les outils de compilation 64 bits soient chargés dans le PATH en utilisant ce qu'il recherche ...\VC\bin\vcvarsamd64.batet ...\VC\bin\amd64\vcvarsamd64.bat.
Josh Bowden
73

Que se passe-t-il? Les modules Python peuvent être partiellement écrits en C ou C ++ (généralement pour la vitesse). Si vous essayez d'installer un tel package avec Pip (ou setup.py), il doit compiler ce C / C ++ à partir de la source. Hors de la boîte, Pip vous assumera effrontément 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 prescrite consiste à installer un compilateur C / C ++, soit Microsoft Visual C ++, soit MinGW (un projet open-source). Cependant, l'installation et la configuration de l'un ou l'autre est d'une difficulté prohibitive. (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 programmes d'installation pour Python 2.x et 3.x, 32 bits et 64 bits. Vous pouvez les télécharger sur http://www.lfd.uci.edu/~gohlke/pythonlibs/


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

À titre de comparaison, Ruby est livré avec un gestionnaire de paquets Gem et propose un compilateur C / C ++ quasi officiel, DevKit. Si vous essayez d'installer un package sans lui, vous voyez ce message utile et convivial:

Veuillez mettre à jour votre CHEMIN pour inclure des outils de construction ou télécharger le DevKit depuis http://rubyinstaller.org/downloads et suivre les instructions à http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

Vous pouvez lire une diatribe plus longue sur le packaging Python sur https://stackoverflow.com/a/13445719/284795

Colonel Panic
la source
Comment puis-je utiliser pip pour installer cet exécutable précompilé dans mon environnement virtuel?
Shailen
@shailenTJ bonne question. Je ne l'ai jamais fait, mais essayez stackoverflow.com/a/5442340/284795
Colonel Panic
C'était la solution la meilleure / la plus simple que je connaisse. Merci.
user1477388
That Edit 2014 est la meilleure réponse pour moi. Instruction facile à manquer: assurez-vous de mettre setuptoolsà jour vers la version 6.0ou supérieure avec pip install setuptools --upgrade.
orlade
64

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 ajustements ).

Microsoft fournit désormais un compilateur et des en - têtes fournis juste pour pouvoir compiler des extensions Python, à l'URL mémorable:

Compilateur Microsoft Visual C ++ pour Python 2.7

http://aka.ms/vcpython27

Il s'agit d'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 n'importe quelle version de Python initialement compilée avec Visual C ++ 2008, pas seulement Python 2.7.

Si vous démarrez une invite interactive Python ou imprimez sys.version, recherchez la MSCchaîne de version; si c'est le cas, MSC v.1500vous pouvez utiliser cet outil.

De l' annonce originale à la liste des distutils :

Microsoft a publié un package de compilation pour Python 2.7 pour faciliter la création et la distribution de leurs modules d'extension C sur Windows. Le compilateur Microsoft Visual C ++ pour Python 2.7 (alias VC9) est disponible sur: http://aka.ms/vcpython27

Ce package contient tous les outils et en-têtes nécessaires pour créer des 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 qui ne sont pas incluses). D'autres versions de Python construites avec Visual C ++ 2008 sont également prises en charge, donc "Python 2.7" est juste de la publicité - cela fonctionnera bien avec 2.6 et 3.2.

Notez que vous devez avoir installé setuptools6.0 ou plus récent (répertorié dans la configuration système requise sur la page de téléchargement). Le projet que vous installez doit utiliser setuptools.setup(), pas distutilsou la détection automatique ne fonctionnera pas.

Microsoft a déclaré vouloir maintenir l'URL stable, afin que les scripts automatisés puissent la référencer facilement.

Martijn Pieters
la source
2
Selon mon autre commentaire, vous pouvez vous assurer qu'il setuptoolsest à jour pip install setuptools --upgrade.
orlade
J'ai cherché à savoir pourquoi la logique pertinente est setuptoolsplutôt que distutils- après tout, la construction de modules est une fonctionnalité de base, et elle a le code pertinent, mais une version plus ancienne de celle-ci. On dirait que les distutilsresponsables ont abandonné la prise en charge de toutes les variantes possibles du MSSDK et ont transféré ce travail sur leurs setuptoolscollègues plus désireux.
ivan_pozdeev
1
@ivan_pozdeev: setuptoolspeut également sortir beaucoup plus souvent que ce distutilsqui est inclus dans le cycle de sortie de Python. Et distitutilsest en effet entré dans une sorte de mode de maintenance, avec des travaux sur de nouveaux systèmes prévus pour le remplacer. Ce travail a plutôt calé.
Martijn Pieters
cython utilise des distutils, vous devez importer des setuptools qui patchent les distutils par monkey: github.com/cython/cython/wiki/CythonExtensionsOnWindows
denfromufa
54

Je viens d'avoir ce même problème, donc je vais raconter mon histoire ici en espérant que cela aide quelqu'un d'autre avec les mêmes problèmes et leur sauve 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é avec cette erreur lors de l'exécution de l'installation de setup.py:

error: Unable to find vcvarsall.bat

Résolu facilement après avoir recherché l'erreur sur Google en spécifiant mingw comme compilateur de choix:

setup.py install build --compiler=mingw32

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

configure: error: cannot run C compiled programs.

Il s'avère que mon antivirus bloquait l'exécution d'un .exe fraîchement 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 l'a résolu: "Installez une version légèrement plus ancienne de MinGW, ou éditez distutils \ cygwinccompiler.py dans votre répertoire Python pour supprimer toutes les instances de -mno-cygwin." (d' ici )

Maintenant, je peux enfin commencer à travailler.

fpessoa
la source
7
Vous aurez également besoin d'une version compatible MinGW de la bibliothèque Python. Voir eli.thegreenplace.net/2008/06/28/… pour plus d'informations
Gili
Tours et détours: D
Xilpex
23

On dirait qu'il cherche des 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
VOUS
la source
16
Juste pour clarifier, la commande qui fonctionne est: python setup.py build --compiler=mingw32suivie parpython setup.py install
Emil Stenström
Après avoir exécuté python setup.py build --compiler = mingw32, je reçois ImportError: Aucun module nommé Cython.Distutils pendant que Cython est installé sous Anaconda. Aucune suggestion?
Serendipity
20

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

  1. Ajout du répertoire bin de mingw32 à la variable d'environnement: ajoutez PATH avecC:\programs\mingw\bin;
  2. Créé distutils.cfg situé à C:\Python27\Lib\distutils\distutils.cfgcontenant:

    [build]
    compiler=mingw32

Pour éviter que MinGW ne reconnaisse plus le drapeau -mno-cygwin, supprimez le drapeau dans C: \ Python27 \ Lib \ distutils \ cygwincompiler.py ligne 322 à 326, il ressemble donc à ceci:

  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))
LDN
la source
15

Regardez dans le setup.pyfichier du package que vous essayez d'installer. S'il s'agit d'un package plus ancien, il peut être importé distutils.core.setup()plutôt que setuptools.setup().

J'ai rencontré 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 package plus ancien qui utilise distutils.core.setup()

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

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


Solution

Étape 1: ouvrez l'invite de commandes Visual C ++ 2008 appropriée

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

Étape 2: définir les variables d'environnement

Définissez ces variables d'environnement dans l'invite de commandes que vous venez d'ouvrir.

SET DISTUTILS_USE_SDK=1
SET MSSdk=1

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

Étape 3: créer et installer

cdau package que vous souhaitez créer et exécuter python setup.py build, puis python setup.py install. Si vous souhaitez installer sur un virtualenv, activez-le avant de créer.

Christian Long
la source
vous pouvez également créer votre package en utilisant <code> pip </code> au lieu de <code> python setup.py build </code>
aronadaal
9

Peut-être que quelqu'un peut être intéressé, ce qui suit a fonctionné pour moi pour le package py2exe. (J'ai Windows 7 64 bits et python 2.7 portable, Visual Studio 2005 Express avec SDK Windows pour Windows 7 et .NET Framework 4)

set VS90COMNTOOLS=%VS80COMNTOOLS%

puis:

python.exe setup.py install
Stefano Fenu
la source
Non, vous avez raison, je ne suis pas sûr de ce qui s'est passé, je vais supprimer le commentaire d'origine.
Dave Challis du
1
Très utile!! Dans mon cas, j'ai fait 'set VS90COMNTOOLS =% VS110COMNTOOLS%'.
jrvidotti
@Exzile: oui, vous tapez ces commandes à la même session d'invite de commandes
Stefano Fenu
NE FAITES PAS CELA!!! Voir cette réponse pour plus de détails.
Anonyme
8

J'ai passé près de 2 jours à découvrir comment résoudre ce problème dans ma version 64 bits de python 3.4: 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, c'est ce qui m'a aidé:

  1. installer Visual C ++ 2010 Express
  2. installer Microsoft Windows SDK v7.1 pour Windows 7
  3. créer manuellement un fichier vcvars64.batdans C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64lequel contient CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64ou un autre chemin d'accès selon l'endroit où vous avez installé le vôtre
  4. (cela semble facultatif) installez Microsoft Visual Studio 2010 Service Pack 1 avec la mise à jour du compilateur Microsoft Visual C ++ 2010 Service Pack 1 pour le SDK Windows 7.1
  5. après cela, j'ai essayé pip install numpymais 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à Noneen C:\Python34\Lib\distutils\msvc9compiler.pypar ce https://stackoverflow.com/a/23099820/4383472

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

Cela a pris très longtemps - plusieurs minutes pour compiler numpy, j'ai même pensé qu'il y avait une erreur, mais finalement tout allait bien.

Solution 2, facile: (Je sais que cette approche a déjà été mentionnée dans une réponse très votée , mais permettez-moi de répéter car elle est vraiment plus facile) Après avoir parcouru tout ce travail, j'ai compris que la meilleure façon pour moi était simplement d'utiliser déjà binaires précompilés de http://www.lfd.uci.edu/~gohlke/pythonlibs/ à l'avenir. Il y a très peu de chances 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) à partir de ce site
  2. dans l'invite de commande ou powershell, installez-le avec pip pip install numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl(ou chemin complet du fichier selon la façon dont l'invite de commande est ouverte)
Mauvais
la source
numpy ‑ 1.9.2 + mkl ‑ cp34 ‑ none ‑ win_amd64.whl - impossible de trouver ce fichier sur le lien ci-dessus.
Amresh Giri
7

Je voulais exécuter pysph sur Windows 10 sous Python 2.7 et j'ai obtenu vcvarsall.bat introuvable (de distutils)

Ma solution était la suivante:

Installez Microsoft Visual C ++ pour Python 2.7 (comme l'a suggéré @Michael)

Sur Windows 10, il a été installé dans (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 . Trouvez-y la fonction find_vcvarsall et faites après modification.

Remplacez la ligne:

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

avec

productdir = os.path.join(toolsdir)

C'est là que vcvarsall.bat réside dans mon cas (vérifiez où vcvarsall.bat est dans votre installation).

Chiefenne
la source
Chose intéressante, %userprofile%\Appdata\Local\Programs\Commonc'est vide pour moi.
Bryce Guinta
Même après avoir installé Microsoft Visual C ++ pour Python 2.7?
Chiefenne
7

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'ai eu VS2008, 2012, 2013, dont aucun n'est compatible avec python 3.5. Apparemment, une version plus récente de python dépend des versions plus récentes de VS.

Assurez-vous également que les outils communs C ++ sont installés avec Visual Studio.

entrez la description de l'image ici

DG
la source
6

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

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

Sélectionnez simplement le fichier et copiez-le.

Allez ensuite 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.

Games Brainiac
la source
Non, tout ne va pas bien, j'ai suivi votre réponse mais je reçois toujours la même erreur.
Stupid_Intern
6

Vous pouvez télécharger la version gratuite de 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, la génération avec un compilateur compatible.

Comme @PiotrDobrogost l'a mentionné dans un commentaire, sa réponse à cette autre question explique en détail pourquoi Visual C ++ 2008 est la bonne chose à construire, mais cela peut changer à mesure que la version Windows de Python se déplace vers des versions plus récentes de Visual Studio: construction lxml pour Python 2.7 sur Windows

Eric Smith
la source
Assurez-vous également qu'aucune autre version n'est installée. J'ai eu du mal avec ça. J'ai reformaté l'ordinateur et installé uniquement cette version. Depuis la suppression de plusieurs versions de VS, cela m'aurait pris autant de temps.
jmunsch
6

J'ai eu ce problème en utilisant Python 3.4.1 sur Windows 7 x64 , et malheureusement les packages dont j'avais besoin n'avaient pas d'exe ou de roues que je pouvais utiliser. Ce système nécessite quelques «solutions de contournement», qui sont détaillées ci-dessous (et TLDR en bas ).

En utilisant les informations dans la 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 des 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 package, query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']. Il y a d'autres questions de stackoverflow avec cette erreur, telles que des 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 installe uniquement des compilateurs 32 bits. Pour obtenir des compilateurs 64 bits (et autres), vous devez installer le SDK Windows 7.1. Voir http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx

Cependant, cela ne serait pas installé 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 bref, si des versions plus récentes des redistribuables Microsoft Visual C ++ 2010 x86 et x64 sont installées, elles sont en conflit avec celles du programme d'installation du SDK et doivent d'abord être désinstallées.

Le SDK a ensuite été installé, mais j'ai remarqué que vcvars64.bat n'existait toujours pas C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin, ni ses sous-dossiers. vcvarsall.bat exécute le fichier batch vcvars64, donc sans lui, le paquet python ne s'installerait toujours pas (j'ai oublié l'erreur qui a été affichée à ce moment).

J'ai ensuite trouvé quelques instructions ici: http://www.cryptohaze.com/wiki/index.php/Windows_7_Build_Setup#Download_VS_2010_and_Windows_SDK_7.1 Suite aux instructions, j'avais déjà installé Express et 7.1 SDK, donc installé SDK 7.1 SP1, et fait le correction du 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, pour 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 SQL 2008.

Vous aurez également besoin du SDK Windows (actuellement 7.1) pour les compilateurs 64 bits - à moins que vous ne vouliez faire que des versions 32 bits, qui ne sont pas entièrement 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 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 corriger le fichier d'en-tête manquant, VS2010 SP1. http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5

Et, bon sang, 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 ce qui suit (vous devrez exécuter en tant qu'administrateur):

APPEL setenv / x64

Mon package python ne s'est toujours pas installé (je ne me souviens pas de l'erreur). J'ai ensuite trouvé quelques instructions (copiées ci-dessous) pour utiliser l'invite de commande spéciale SDK 7.1, voir: https://mail.python.org/pipermail/distutils-sig/2012-F February / 018300.html

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

Cela exécute un travail par lots qui semble configurer un environnement de travail pour le compilateur. À partir de cette invite, vous pouvez taper "setup.py build" ou "setup.py install".

J'ai ouvert l'invite de commandes du SDK Windows 7.1 comme indiqué et l'ai utilisé 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 redistributables mis à jour ou serveur SQL).
  2. Installer le SDK Windows 7.1
  3. Installez la mise à jour du SDK 7.1 SP1 et le correctif du fichier d'en-tête VS2010 SP1 (cette étape peut ne pas être requise).
  4. Créer manuellement C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.batavec du contenuCALL setenv /x64
  5. Démarrer-> Tous les programmes-> Microsoft Windows SDK v7.1 -> Windows SDK 7.1 Command Prompt pour ouvrir une invite de commande spéciale x64, qui peut ensuite être utilisée avec python / easy_install / pip / etc (y compris ceux de virtual_envs).
neRok
la source
4

Les étapes ci-dessous ont résolu 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: \ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ pour Python. Cela pourrait en fait résoudre le problème, testez une fois avant de continuer.
  3. En cas d'échec, vérifiez où se trouve VC ++ pour le fichier python vcvarsall.bat
  4. Ouvrez le fichier msvc9compiler.py du package distutils dans le bloc-notes.
  5. Dans ma boîte, c'était la fonction @ C: \ Anaconda2 \ Lib \ distutils \ msvc9compiler.py find_vcvarsall dans ce fichier, déterminez la version de VC en imprimant l'argument de version. Pour Python 2.7, il est probable qu'il soit de 9,0
  6. Créez maintenant une variable d'environnement VS90COMNTOOLS, pointant vers C: \ Users \ PC-user \ AppData \ Local \ Programs \ Common \ 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 les outils python l'a à la racine de 9.0 Pour résoudre ce problème, supprimez "VC" du path.join (à peu près 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.

Riyas Deen
la source
J'obtiens une erreur de liaison en suivant les étapes ci-dessus LINK: erreur LNK2001: symbole externe non résolu init__init__ build \ temp.win-amd64-2.7 \ Release_ init_ .lib: erreur fatale LNK1120: 1 erreur externe non résolue: commande 'C: \\ Users \\ ma306477 \\ AppData \\ Local \\ Programs \\ Common \\ Microsoft \\ Visual C ++ for Python \\ 9.0 \\ VC \\ Bin \\ amd64 \\ link.exe 'a échoué avec l'état de sortie 1120
manish Prasad
3

J'ai essayé de nombreuses 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!

Malgré le fait qu'il soit gratuit, il est assez difficile à trouver car MS fait la promotion de VS 2010. Pourtant, les liens officiels très directs de MSDN fonctionnent toujours: consultez https://stackoverflow.com/a/15319069/2227298 pour les liens de téléchargement.

KrisWebDev
la source
Oui, la meilleure façon est d'installer VS2008.
Pylover
3

Si vous avez installé mingw

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

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

Nicolas78
la source
3

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?

Michael
la source
A travaillé pour moi. Message d'erreur à la fin de l'installation de pip pysftp avait cette solutionerror: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat). Get it from http://aka.ms/vcpython27
Bob Stein
3

La façon la plus simple de résoudre ce problème en 2016 est d'installer Chocolatey, puis le vcpython27package. Powershell ouvert:

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

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

Le message d'erreur typique que vous recevrez si vous avez besoin de ce package de compilation est impossible de trouver vcvarsall.bat

J'espère que cela t'aides!

mkamioner
la source
2

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

"Google" m'a dit que je devais installer "Microsoft Visual C ++ Compiler for Python 2.7". J'installe non seulement l'outil, mais aussi 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 a disparu!

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

Vova
la source
2

L'appel de import setuptoolsmonkey patch distutils pour forcer la compatibilité avec Visual Studio. L'appel vcvars32.batmanuel configurera l'environnement virtuel et empêchera d'autres erreurs courantes que le compilateur générera. Pour VS 2017, le fichier se trouve à

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

Voici le script de configuration 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()
user2682863
la source
En effet, l'importation setuptoolsaide, même dans le cas de la compilation de cython .
Basj
pourriez-vous expliquer un peu plus en détail? comment appeler le vcvars32.bat manuellement? J'ai une compilation de cython
June Wang
2

Utilisez ce lien pour télécharger et installer Visual C ++ 2015 Build Tools . Il téléchargera visualcppbuildtools_full.exeet installera automatiquement Visual C ++ 14.0 sans installer réellement Visual Studio. Une fois l'installation terminée, réessayez d'installer pip et vous n'obtiendrez plus l'erreur.

Je l'ai testé sur la plateforme et les versions suivantes:

Python 3.6 on Windows 7 64-bit
Python 3.7 on Windows Server 2016 (64-bit system)
Python 3.8 on Windows 10 64-bit
Lalit Kumar B
la source
1

Si vous cherchez à installer pyodbc sur une boîte Windows sur laquelle Visual Studio n'est pas installé, une autre option consiste à installer manuellement pyodbc à l'aide de la distribution binaire.

Cela est particulièrement utile si vous n'avez pas de privilèges d'administrateur sur la machine avec laquelle vous travaillez et que vous essayez de configurer un virtualenv .

Pas:

  1. Téléchargez le dernier programme d'installation de Windows à partir d' ici (pyodbc-XXXwin-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-XXX-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 :)
Danois B
la source
1

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

L'inciter à utiliser les installations VS 2008 ou 2013 que je n'avais pas fonctionné.

gmjonker
la source
1

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

Abdul Majeed
la source
Même erreurerror: Setup script exited with error: Unable to find vcvarsall.bat
Stephan Schielke
1

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

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

Vous devez également avoir le chemin défini sur make.exe dans l'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 PATH
  3. Modifiez (créez s'il n'existe pas) le distutils.cfgfichier situé dans C:\Python26\Lib\distutils\distutils.cfg:

    [build]
    compiler=mingw32

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

Olivier N
la source
Les modules python 32 bits doivent être compilés avec mingw 32 bits, tandis que les modules python 64 bits doivent être compilés avec mingw 64 bits. Sur Cygwin 64 bits, 2 exécutables mingw sont disponibles: x86_64-w64-mingw32-gccet i686-w64-mingw32-gcc. Ces exécutables sont apparemment les mêmes que ceux que vous obtiendriez normalement de Mingw (juste compilés dans un environnement Cygwin).
CMCDragonkai