web-dev-qa-db-fra.com

pip installer donne une erreur: Impossible de trouver vcvarsall.bat

En utilisant pip install zipline sur Windows 8 avec Python 2.7 me donne l’erreur suivante:

Downloading/unpacking six (from python-dateutil==2.1->delorean->zipline[all])
  Running setup.py Egg_info for package six

Installing collected packages: blist, pytz, requests, python-dateutil, six
  Running setup.py install for blist
    building '_blist' extension
    error: Unable to find vcvarsall.bat
    Complete output from command C:\Python27\python.exe -c "import setuptools;__
file__='c:\\users\\ThatsMe\\appdata\\local\\temp\\pip-build-ThatsMe\\blist\\setup.py';ex
ec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" inst
all --record c:\users\ThatsMe\appdata\local\temp\pip-xvoky2-record\install-record.tx
t --single-version-externally-managed:

running install

running build

running build_py

running build_ext

building '_blist' extension

error: Unable to find vcvarsall.bat

Question: Comment l'erreur peut-elle être résolue? Fonctionnement pip install zipline[all] donne la même erreur ...

50
Nyxynyx

Vous pouvez utiliser ol 'good easy_install zipline au lieu.

easy_install _ n'est pas un pip, mais un bon aspect de ce logiciel est la possibilité de télécharger et d'installer des packages binaires, ce qui vous libèrerait du besoin de disposer de VC++. Ceci repose bien sûr sur l'hypothèse que les fichiers binaires ont été préparés pour votre version Python.

MISE À JOUR:

Oui, Pip peut installer des fichiers binaires maintenant!

Il existe un nouveau format binaire Python archive ( roue )) censé remplacer "œufs". Les roues sont déjà supportées par pip. Cela signifie que vous Serez capable d'installer zipline avec pip sans le compiler dès que quelqu'un construira la roue de votre plate-forme et la chargera sur PyPI.

23
Kos

Le problème ici est la ligne 292 (Using Python 3.4.3 ici) dans $python_install_prefix/Lib/distutils/msvc9compiler.py qui dit:

VERSION = get_build_version()

Ceci ne vérifie que la version MSVC avec laquelle votre python a été construit. Remplacez simplement cette ligne par votre version actuelle de Visual Studio, par exemple. 12.0 pour MSVC2013

VERSION = 12.0

va résoudre le problème.

UPDATE: Il s'avère qu'il y a une bonne raison pour laquelle cette version est codée en dur. Il n'est pas nécessaire que le runtime MSVC C soit compatible entre les versions principales. Par conséquent, lorsque vous utilisez une version de VS différente, vous risquez de rencontrer des problèmes d'exécution. Je recommande donc d’utiliser VS 2008 (pour Python 2,6 à 3,2) et VS2010 pour (Python 3.3 et versions ultérieures) jusqu’à ce que ce problème soit réglé.

La compatibilité binaire arrivera avec VS 2015 ( voir ici ) avec Python 3.5.

Pour Python 2.7), Microsoft a publié un spécial compilateur Microsoft Visual C++ pour Python 2.7 qui peut être utilisé sans installer l’ensemble de VS 2008. .

59
ismail

Si vous obtenez cette erreur sur Python 2.7, vous pouvez maintenant obtenir le compilateur Microsoft Visual C++ pour Python 2.7 > seul Télécharger.

Si vous utilisez la version 3.3 ou une version ultérieure, vous devez installer Visual Studio 2010 Express, disponible gratuitement ici: https://www.visualstudio.com/downloads/download-visual-studio-vs#d-2010- express

Si vous utilisez la version 3.3 ou une version ultérieure et utilisez une version 64 bits de python, vous devez installer le SDK Microsoft 7.1 fourni avec un compilateur 64 bits et suivre les instructions fournies ici Le PIP Python pose des problèmes avec chemin pour MS Visual Studio 2010 Express pour une installation 64 bits sous Windows 7

9
Broccoli Soup

Tout d’abord, vous devez rechercher le fichier vcvarsall.bat dans votre système.

S'il n'existe pas, je vous recommande d'installer Compilateur Microsoft Visual C++ pour Python 2.7 . Ceci créera vcvarsall.bat dans "C:\Program Files ( x86)\Fichiers communs\Microsoft\Visual C++ pour Python\9.0 "si vous l’installez pour tous les utilisateurs.

Le problème est maintenant dans la fonction find_vcvarsall (version) dans le C:/Python27/Lib/distutils/msvc9compiler .py module, qui recherche le fichier vcvarsall.bat.

Après les appels de fonction, vous verrez qu'il recherche une entrée dans le registre contenant le chemin d'accès au fichier vcvarsall.bat. Il ne le trouvera jamais car cette fonction recherche dans d'autres répertoires que l'emplacement d'installation mentionné ci-dessus, et dans mon cas, le registre n'existait pas.

Le moyen le plus simple de résoudre ce problème consiste à renvoyer manuellement le chemin du fichier vcvarsall.bat. Pour ce faire, modifiez la fonction find_vcvarsall (version) dans le msvc9compiler.py fichier avec le chemin d'accès absolu au fichier vcvarsall.bat comme ceci:

def find_vcvarsall(version):
    return r"C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat"

Cette solution a fonctionné pour moi.

Si vous avez déjà le fichier vcvarsall.bat, vous devez vérifier si vous avez la clé productdir dans le registre:

(HKEY_USERS, HKEY_CURRENT_USERS, HKEY_LOCAL_MACHINE ou HKEY_CLASSES_ROOT)\Software\Wow6432Node\Microsoft\VisualStudio\version\Setup\VC

version = msvc9compiler.get_build_version ()

Si vous n'avez pas la clé, faites simplement:

def find_vcvarsall(version):
        return <path>\vcvarsall.bat

Pour comprendre le comportement exact du contrôle , msvc9compiler.py commence dans le module find_vcvarsall (version) une fonction.

7

Simplement parce que le compilateur c ++ n’est pas installé sur votre ordinateur, vérifiez les points suivants:

  • Téléchargez Microsoft Visual C++ 2008 à partir de cette page . De toute façon, c'est une page généralement utile, alors vous devriez probablement la mettre en favori. Pour Python 3.3+, utilisez MS Visual C++ 201 . Installez-le.

  • Ouvrez l’Explorateur Windows (le navigateur de fichiers), recherchez l’emplacement de ‘vcvarsall.bat’ et coupez-le dans le Presse-papiers.

  • exécutez regedit à partir de la touche de démarrage de Windows. Vous aurez besoin de privilèges d'administrateur.

  • Ajoutez une entrée de registre à HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC\ProductDir (Windows 64 bits) ou à HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Setup\VC\ProductDir (32 bits) comme décrit - ici .

Indice : 0,9 dans le répertoire de la base de registres est la version actuellement installée de votre studio visuel. Si vous exécutez VS 2013, vous devez rechercher le chemin HKEY_LOCAL_MACHINE\Software.\Wow6432Node\Microsoft\VisualStudio\12.0 ....

  • À la touche de démarrage de Windows, tapez cmd pour obtenir une commande Shell. Si vous en avez besoin, accédez à votre environnement virtuel et exécutez activate.bat.

  • pip installer ou ce que vous utilisez pour l'installer.

3
Muhammad Soliman

Vous devez avoir le répertoire bin de Visual Studio dans votre chemin. Pip install essaye de compiler du code C.

2
Nitzan Shaked

J'ai passé des heures à faire des recherches sur ce vcvarsall.bat également. La plupart des réponses sur SO sont centrées sur Python 2.7 et/ou la création de solutions de contournement en modifiant les chemins système. Aucune solution n’a fonctionné pour moi. Cette solution a fonctionné dès le départ pour = Python 3.5 et (je pense) est la "bonne" façon de le faire.

  1. Voir ce lien - il décrit les compilateurs Windows à utiliser pour différentes versions de Python: https://wiki.python.org/moin/WindowsCompilers#Microsoft_Visual_C.2B-.2B-_14.0_standalone:_Visual_C.2B -.2B-_Build_Tools_2015_.28x86.2C_x64.2C_ARM.29

  2. Pour Python 3.5, téléchargez ceci: https://www.Microsoft.com/en-us/download/details.aspx?id=4998

  3. Pour moi, je devais exécuter C:\Program Files (x86)\Microsoft Visual C++ Outils de compilation\Visual C++ x64 Invite de commande des outils de génération natifs pour que cela fonctionne. À partir de cette invite de commande, j'ai exécuté "pip install Django_compressor", qui était le paquet particulier qui me causait un problème et cela fonctionnait parfaitement.

J'espère que cela fait gagner du temps à quelqu'un!

1
ashishsingal

Si vous essayez d'installer matplotlib afin de travailler avec des graphes sur python. Essayez ce lien. https://github.com/jbmohler/matplotlib-winbuild . Il s'agit d'un ensemble de scripts permettant de créer matplotlib à partir des sources sur la plate-forme MS Windows.

Pour compiler et installer matplotlib dans votre Python, faites:

git clone https://github.com/matplotlib/matplotlib
git clone https://github.com/jbmohler/matplotlib-winbuild
$ python matplotlib-winbuild\buildall.py

Le script de construction détectera automatiquement Python version & 32/64 bits automatiquement.

0
The Web Hive

Merci à "msoliman" pour son indice, cependant sa réponse ne donne pas de solution claire pour ceux qui n'ont pas VS2010
Par exemple, j'ai VS2012 et VS2013 et il n'y a pas de telles clés dans le registre du système.

Solution:
Editer le fichier: "[Python_install_loc]/Lib/distutils/msvc9compiler.py"
Modification à la ligne 224:

productdir = Reg.get_value(r"%s\Setup\VC" % vsbase,
                               "productdir")

à:

productdir = "C:\Program Files (x86)\Microsoft Visual Studio [your_vs_version(11/12...)]\VC"

et ça devrait marcher

0
Briksins

J'apprécie que cela ne soit peut-être pas la solution pour résoudre 3.4, mais j'ai essayé une grande variété de solutions pour le résoudre en 3.4 et j'ai pensé que cela pourrait être utile si quelqu'un pressait le temps ou n'avait pas le savoir-faire pour le corriger mon cas, les exigences du travail).

Avec exactement la même configuration, j'ai constaté que mes problèmes d'installation ne se produisaient qu'avec Python 3.4. Lorsque je suis passé à la version 2.7, tous mes problèmes semblaient résolus.

Nous avons une configuration de sécurité un peu trop zélée, je vais donc essayer la même chose sur ma version personnelle (toujours 3.4) et voir si j’ai plus de joie. Mon penchant est que ma version de VS a été en quelque sorte restreinte et les réponses ci-dessus devraient aider. Si je trouve autre chose ce soir, je vais ajouter plus de détails.

C'est ma première réponse, pas la plus technique, j'en ai peur!

0
Philip Jones