J'ai essayé d'installer Scrapy pour Python 2.7.8 (anaconda 2.1.0) 32 bits en utilisant
pip install scrapy
Et j'ai eu cette erreur
error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat).
J'ai suivi les solutions trouvées dans ces questions de flux stackover. Rien n'a fonctionné.
Compilateur Microsoft Visual C++ pour Python 2.7
fichier vcvarsall.bat introuvable
erreur: impossible de trouver vcvarsall.bat
pip install donne une erreur: Impossible de trouver vcvarsall.bat
Comment puis-je diriger easy_install vers vcvarsall.bat?
pip installer MySQL-python ne peut pas trouver vcvarsall.bat
C'est l'erreur, et quelques lignes au dessus et en dessous:
copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\readme.txt
-> build\lib.win32-3.4\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
running build_ext
building 'lxml.etree' extension
C:\Python34\lib\distutils\dist.py:260: UserWarning: Unknown distribution opt
ion: 'bugtrack_url'
warnings.warn(msg)
error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat).
----------------------------------------
Command "C:\Python34\python.exe -c "import setuptools, tokenize;__file__='C:
\\Users\\San\\AppData\\Local\\Temp\\pip-build-wp6ei6r9\\lxml\\setup.py';exec(com
pile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __f
ile__, 'exec'))" install --record C:\Users\San\AppData\Local\Temp\pip-kfkzr_67-r
ecord\install-record.txt --single-version-externally-managed --compile" failed w
ith error code 1 in C:\Users\San\AppData\Local\Temp\pip-build-wp6ei6r9\lxml
J'ai à la fois Microsoft Visual Studio 12.0 et le package de compilateur Microsoft Visual C++ pour Python 2.7, qui ont tous deux le fichier vcvarsall.bat.
J'ai une variable système appelée "VS120COMNTOOLS" et son chemin d'accès est défini sur
C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\
J'ai également ajouté les deux chemins à mes variables d'environnement. J'ai également essayé d'ajouter simplement un, puis l'autre. Mon chemin ressemble à ceci
C:\Program Files\Java\jdk1.7.0_25\bin;\Python27;\Python2\python.exe;C:\Python27\Scripts\;C:\Users\San\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\;C:\Program Files\Microsoft Visual Studio 12.0\VC\;
J'ai également mis à jour mes outils d'installation (je pense à la version 8), qui devraient détecter automatiquement le compilateur Microsoft Visual C++ pour Python 2.7. Cependant, je reçois toujours la même erreur.
J'ai aussi essayé d'utiliser
easy_install scrapy
Et je reçois cette erreur
error: Setup script exited with error: Microsoft Visual C++ 10.0 is required (Un
capable de trouver vcvarsall.bat).
J'ai aussi les éléments suivants dans mon registre
HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Setup\VC\ProductDir
HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\12.0\Setup\VC\ProductDir
J'ai essayé toutes les suggestions et trouvé ma propre solution simple.
Le problème est que les codes écrits dans un environnement externe comme C
nécessitent un compilateur. Rechercher son propre environnement VS, c.-à-d. VS 2008.
Actuellement, ma machine fonctionne sous VS 2012 et fait face à Unable to find vcvarsall.bat
. J'ai étudié les codes que je veux installer pour trouver la version du VS. C'était VS 2008. J'ai ajouté à la variable système VS90COMNTOOLS
en tant que nom de variable et donné la valeur de VS120COMNTOOLS
.
Vous pouvez trouver ma solution étape par étape ci-dessous:
Ouvrez maintenant une nouvelle session et pip install your-package
Après avoir fait beaucoup de choses, j'ai mis à jour pip
, setuptools
et virtualenv
.
python -m pip install -U pip
pip install -U setuptools
pip install -U virtualenv
J'ai effectué les étapes 1 et 2 dans mon environnement virtuel et globalement. Ensuite, j'ai installé le paquet avec pip
et cela a fonctionné.
Essayez d’installer this , c’est une solution connue pour activer le compilateur C++ pour Python 2.7.
D'après mon expérience, lorsque pip ne trouve pas le compilateur vcvarsall.bat, je ne fais qu'ouvrir une console Visual Studio, car il définit les variables de chemin d'accès pour appeler vcvarsall.bat directement, puis exécuter pip sur cette ligne de commande.
La même erreur se produisait dans python 3.4.3 et j’essayais d’utiliser les solutions mentionnées ici et ailleurs sans succès.
Microsoft rend un compilateur disponible pour Python 2.7, mais cela ne m'a pas beaucoup aidé puisque je suis sous 3.4.3.
Python depuis la version 3.3 a migré vers 2010 et vous pouvez télécharger et installer gratuitement Visual C++ 2010 Express ici: https://www.visualstudio.com/downloads/download-visual-studio-vs#d-2010- express
Voici l'article de blog officiel qui parle de la transition vers 2010 pour la version 3.3: http://blog.python.org/2012/05/recent-windows-changes-in-python-33.html
Comme les versions précédentes donnaient une erreur différente pour vcvarsall.bat, je vérifierais de nouveau la version que vous utilisez avec "pip -V"
C:\Users\B>pip -V
pip 6.0.8 from C:\Python34\lib\site-packages (python 3.4)
En passant, j’ai moi aussi essayé d’utiliser la dernière version de VC++ (2013), mais il a fallu installer 2010 express.
À partir de là, cela devrait fonctionner pour tous les utilisateurs de la version 32 bits. Si vous utilisez la version 64 bits, vous obtiendrez alors le message ValueError: ['path'] car VC++ 2010 ne dispose pas d'un compilateur 64 bits. Pour cela, vous devez obtenir le Microsoft SDK 7.1. Je ne peux pas créer de lien hypertexte pour 64 bits, car je suis limité à 2 liens par message, mais sa
Ici aussi, je peux reproduire ce problème avec scrapy
et psycopg2
(les deux nécessitent une compilation C++), même si j'ai compilateur Microsoft Visual C++ pour Python 2.7 installée.
Il faut noter que j'utilise virtualenv
. De votre poste, je ne suis pas sûr si vous faites la même chose.
Quoi qu'il en soit, j'ai essayé de ignorer l'activation de l'environnement virtuel . Ensuite, scrapy
et psycopg2
sont correctement installés.
Mon hypothèse: il existe un conflit entre ce compilateur C++ de 2014 pour Python et virtualenv. Je ne sais pas pourquoi ni comment le résoudre (et je serais heureux si quelqu'un peut suggérer une solution de contournement).