pip install donne une erreur: Impossible de trouver vcvarsall.chauve

en utilisant pip install zipline sur Windows 8 avec Python 2.7 me donne l'erreur:

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:Python27python.exe -c "import setuptools;__
file__='c:usersThatsMeappdatalocaltemppip-build-ThatsMeblistsetup.py';ex
ec(compile(open(__file__).read().replace('rn', 'n'), __file__, 'exec'))" inst
all --record c:usersThatsMeappdatalocaltemppip-xvoky2-recordinstall-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 résoudre l'erreur? Exécuter pip install zipline[all] donne la même erreur...

50
demandé sur Nyxynyx 2013-11-07 12:19:40

10 réponses

vous pouvez utiliser le bon vieux easy_install zipline à la place.

easy_install n'est pas pip mais un bon aspect de celui-ci est la possibilité de télécharger et d'installer des paquets binaires aussi, ce qui vous libérerait pour le besoin d'avoir VC++ prêt. Cela s'appuie bien sûr sur l'hypothèse que les binaires ont été préparés pour votre version Python.

mise à jour:

oui, Pip peut installer des binaires maintenant!

il y a un nouveau Python binaire format d'archives ( wheel ) qui est censé remplacer "eggs". Les roues sont déjà supportées par pip . Cela signifie que vous pourrez installer zipline avec pip sans le compiler dès que quelqu'un aura construit la roue pour votre plateforme et l'aura envoyée à PyPI.

24
répondu Kos 2014-06-19 07:56:28

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

VERSION = get_build_version()

cela ne vérifie que la version MSVC avec laquelle votre python a été construit. Il suffit de remplacer cette ligne par votre version Visual Studio, par exemple. 12.0 pour MSVC2013

VERSION = 12.0

réglera le problème.

mise à jour: il S'avère qu'il y a une bonne raison pour laquelle cette version est codée en dur. MSVC C runtime n'est pas nécessaire d'être compatibles entre les versions majeures. Par conséquent, lorsque vous utilisez une version VS différente, vous pourriez rencontrer des problèmes d'exécution. Je conseille donc D'utiliser VS 2008 (pour Python 2.6 jusqu'à 3.2) et VS2010 pour (Python 3.3 et plus tard) jusqu'à ce que ce problème soit résolu.

La compatibilité binaire

arrivera avec VS 2015 ( voir ici ) avec Python 3.5 .

pour les utilisateurs de Python 2.7 Microsoft a publié un spécial Microsoft Visual C++ Compiler pour Python 2.7 qui peut être utilisé sans installer L'ensemble VS 2008.

59
répondu ismail 2015-11-22 08:54:39

si vous obtenez cette erreur sur Python 2.7 vous pouvez maintenant obtenir le Microsoft Visual C++ Compiler pour Python 2.7 comme un téléchargement autonome.

si vous êtes sur 3.3 ou plus, vous devez installer Visual Studio 2010 express qui est disponible gratuitement ici: https://www.visualstudio.com/downloads/download-visual-studio-vs#d-2010-express

si vous êtes 3.3 ou plus et utilisez une version 64 bits de python vous devez installer le Microsoft SDK 7.1 qui fournit un compilateur 64 bits et de suivre les instructions ici Python PIP a des problèmes avec le chemin pour MS Visual Studio 2010 Express pour 64 bits installer sur Windows 7

8
répondu Broccoli Soup 2017-05-23 10:30:58

tout d'abord, vous devriez chercher le fichier vcvarsall.chauve-souris dans votre système.

S'il n'existe pas, je vous recommande d'installer Microsoft Visual C++ Compiler for Python 2.7 . Cela créera le vcvarsall.bat in "C:\Program fichiers (x86)\Common Files\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 vcvarsall.le fichier bat.

après les appels de fonction, vous verrez qu'il est à la recherche d'une entrée dans le registre contenant le chemin vers le vcvarsall.le fichier bat. Il ne le trouvera jamais parce que cette fonction cherche dans d'autres répertoires différents de l'endroit où l'installation mentionnée ci-dessus l'a placé, et dans mon cas, le registre n'existait pas.

le la manière la plus simple de résoudre ce problème est de retourner manuellement le chemin du vcvarsall.le fichier bat. Pour ce faire, modifier la fonction find_vcvarsall (version) dans le msvc9compiler.py fichier avec le chemin absolu vers le vcvarsall.fichier bat comme ceci:

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

Cette solution a fonctionné pour moi.

si vous avez déjà le vcvarsall.vous devriez vérifier si vous avez la clé productdir dans le registre:

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

version = msvc9compiler.get_build_version ()

Si vous n'avez pas de clé viens de faire:

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

pour comprendre le contrôle de comportement exact msvc9compiler.py module commençant par la fonction find_vcvarsall(version) .

7
répondu Miguel A. Sanchez-Perez 2017-10-04 14:30:11

simplement parce que vous n'avez pas de compilateur c++ installé sur votre machine, cochez la case suivante

  • télécharger Microsoft Visual C++ 2008 à partir de cette page . C'est une page généralement utile de toute façon, donc vous devriez probablement le marquer d'un signet. Pour Python 3.3 + utiliser MS Visual C++ 2010 . L'installer.

  • ouvrir Windows explorer (le navigateur de fichier) et cherchez l'emplacement de ‘vcvarsall.bat’ et les couper dans le presse-papiers.

  • exécuter regedit dans le démarrage de Windows de clés. Vous aurez besoin de privilèges admin.

  • ajouter une entrée au registre HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC\ProductDir (64 bit Windows) or HKEY_LOCAL_MACHINE\Software \ Microsoft\VisualStudio\9.0 \ Setup\VC\ProductDir (32 bits) comme décrit ici .

Hint : 0.9 dans la base de registre répertoire est la version actuellement installée de votre visual studio, si vous exécutez VS 2013, vous devez trouver le chemin HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\12.0....

  • à la touche Windows start, tapez cmd pour obtenir un shell de commande. Si vous avez besoin, allez à votre environnement virtuel et exécutez l'activer.chauve.

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

3
répondu msoliman 2017-05-23 11:55:15

vous devez avoir Visual Studio bin dir dans votre chemin. Pip install essaie de compiler du code C.

2
répondu Nitzan Shaked 2013-11-07 08:30:49

j'ai passé des heures à faire des recherches sur ce vcvarsall.chauve-souris en tant que bien. La plupart des réponses sur SO se concentrent sur Python 2.7 et / ou la création de solutions de contournement en modifiant les chemins du système. Aucun n'a fonctionné pour moi. Cette solution a fonctionné à partir de la boîte pour Python 3.5 et (je pense) est la façon "correcte" 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=49983

  3. pour moi, j'ai dû courir C:\Program fichiers (x86)\Microsoft Visual C++ Build Tools\Visual C++ x64 Native Build Tools L'Invite de commande pour qu'il fonctionne. De cette invite de commande, j'ai lancé "pip install django_compressor" qui était le paquet particulier qui me causait un problème, et ça a fonctionné parfaitement.

Espère que cela sauve quelqu'un certain temps!

1
répondu ashishsingal 2016-03-23 20:48:43

merci à "msoliman" pour son allusion, mais 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:

Modifier le fichier: " [Python_install_loc] /Lib/distutils/msvc9compiler.py "

Changement à 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 qui devrait fonctionner

0
répondu Briksins 2014-04-29 10:47:06

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

pour construire 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 la version Python et le bit 32/64.

0
répondu The Web Hive 2014-12-30 12:19:14

j'apprécie que ce ne soit peut-être pas la réponse à la résolution sur 3.4 mais j'ai essayé une grande variété de choses pour corriger cela sur 3.4 et j'ai pensé que cela pourrait être utile si quelqu'un est pressé par le temps ou n'a pas le savoir-faire pour le corriger (dans mon cas, les exigences du travail).

avec exactement la même configuration, j'ai découvert que mes problèmes d'installation ne se produisaient qu'avec Python 3.4. Quand j'ai changé à 2.7, tous mes problèmes semblaient résolus.

nous avons un plutôt setup sécurité trop zélée bien que je vais donc essayer la même chose sur ma version maison (encore 3.4) et voir si j'ai plus de joie. Mon penchant est que ma version VS a été quelque peu restreinte et les réponses ci-dessus devraient aider. Si je trouve autre chose ce soir, j'ajouterai plus de détails.

C'est ma première réponse, pas la plus technique je le crains!

0
répondu Philip Jones 2015-04-10 17:16:50