Ошибка установки Python Pip: невозможно найти vcvarsall.bat. Перепробовал все решения
Я пытался установить Scrapy for Python 2.7.8 (anaconda 2.1.0) 32-битной, используя
pip install scrapy
И я получил эту ошибку
error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat).
Я следовал за решениями, найденными в этих вопросах потока стека. Ничего не сработало.
Компилятор Microsoft Visual C++ для Python 2.7
Не удается найти файл vcvarsall.bat
ошибка: не удается найти vcvarsall.bat
pip install выдает ошибку: невозможно найти vcvarsall.bat
Как мне указать easy_install на vcvarsall.bat?
pip install MySQL-python возвращает не удалось найти vcvarsall.bat
Это ошибка, и несколько строк выше и ниже:
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
У меня есть и Microsoft Visual Studio 12.0, и пакет компилятора Microsoft Visual C++ для Python 2.7, оба из которых имеют файл vcvarsall.bat.
У меня есть системная переменная, которая называется 'VS120COMNTOOLS' и ее путь установлен в
C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\
Я также добавил оба пути к своим переменным среды. Я также попытался просто добавить один, а затем другой. Мой Путь выглядит так
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\;
Я также обновил свои инструменты установки (я думаю, до версии 8), которые должны автоматически определять компилятор Microsoft Visual C++ для Python 2.7. Тем не менее, я все еще получаю ту же ошибку.
Я также пытался использовать
easy_install scrapy
И я получаю эту ошибку
error: Setup script exited with error: Microsoft Visual C++ 10.0 is required (Un
смог найти vcvarsall.bat).
У меня также есть следующее в моем реестре
HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Setup\VC\ProductDir
HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\12.0\Setup\VC\ProductDir
5 ответов
Я перепробовал все предложения и нашел свое простое решение.
Проблема в том, что коды, написанные во внешней среде, такие как C
нужен компилятор. Ищите свою собственную среду VS, то есть VS 2008.
На данный момент моя машина работает VS 2012 и лица Unable to find vcvarsall.bat
, Я изучил коды, которые я хочу установить, чтобы найти версию VS. Это был VS 2008. Я добавил в системную переменную VS90COMNTOOLS
в качестве имени переменной и дал значение VS120COMNTOOLS
,
Вы можете найти мое пошаговое решение ниже:
- Щелкните правой кнопкой мыши на Мой компьютер.
- Нажмите Свойства
- Расширенные системные настройки
- Переменные среды
- Добавить новую системную переменную
- Введите VS90COMNTOOLS в имя переменной
- Введите значение текущей версии в новую переменную.
- Закрыть все окна
Теперь откройте новый сеанс и pip install your-package
Сделав много вещей, я обновил pip
, setuptools
а также virtualenv
,
python -m pip install -U pip
pip install -U setuptools
pip install -U virtualenv
Я сделал шаги 1, 2 в своей виртуальной среде, а также во всем мире. Далее я установил пакет через pip
и это сработало.
Попробуйте установить это, это известный обходной путь для включения компилятора C++ для Python 2.7.
По моему опыту, когда pip не находит компилятор vcvarsall.bat, все, что я делаю, - это открываю консоль Visual Studio, поскольку она устанавливает переменные пути для непосредственного вызова vcvarsall.bat, а затем я запускаю pip в этой командной строке.
Я получил ту же ошибку в Python 3.4.3 тоже, и я попытался использовать решения, упомянутые здесь и в других местах, но безуспешно.
Microsoft делает компилятор доступным для Python 2.7, но это не принесло мне много пользы, так как я на 3.4.3.
Python с версии 3.3 перешел на 2010 год, и вы можете бесплатно загрузить и установить Visual C++ 2010 Express здесь: https://www.visualstudio.com/downloads/download-visual-studio-vs
Вот официальное сообщение в блоге, рассказывающее о переходе на 2010 год для 3.3: http://blog.python.org/2012/05/recent-windows-changes-in-python-33.html
Поскольку предыдущие версии давали другую ошибку для vcvarsall.bat, я бы дважды проверил версию, которую вы используете, с помощью "pip -V"
C:\Users\B>pip -V
pip 6.0.8 from C:\Python34\lib\site-packages (python 3.4)
Как примечание, я тоже сначала попытался использовать последнюю версию VC++ (2013), но для этого потребовалась установка 2010 Express.
С этого момента он должен работать для всех, кто использует 32-битную версию, если вы используете 64-битную версию, вы получите сообщение ValueError: ['path'], потому что VC++ 2010 не имеет 64-битного компилятора. Для этого вам нужно получить Microsoft SDK 7.1. Я не могу дать гиперссылку на инструкцию для 64-разрядных, потому что я ограничен 2 ссылками на пост, но в
Здесь я также могу воспроизвести эту проблему с scrapy
а также psycopg2
(оба требуют компиляции C++), хотя у меня установлен компилятор Microsoft Visual C++ для Python 2.7.
Следует отметить, что я использую virtualenv
, Из вашего поста я не уверен, что вы делаете то же самое.
В любом случае я попытался пропустить активацию виртуальной среды. Тогда оба scrapy
а также psycopg2
установлен нормально.
Моя гипотеза: существует конфликт между этим компилятором C++ 2014 года для Python и virtualenv. Я не знаю, почему и как это решить (и я был бы рад, если кто-то может предложить обходной путь).