Не удается найти vcvarsall.bat при запуске скрипта Python

Я работаю над Vista и использую Python 2.6.4. Я использую программное обеспечение, которое использует скрипт Python, но наткнулся на сообщение:

cannot find vcvarsall.bat

Итак, я установил Visual C++ 2010. Тем не менее файл не найден - хотя, он есть. Я предполагаю (очень необразованный...), что где-то путь неправильный, потому что у меня также есть старая папка visual 2008 (довольно пустая). Я понятия не имею, где внести изменения для нового пути. Что-то изменить в реестре или в скрипте? Или где-то еще?

18 ответов

Кажется, что Python явно ищет Visual Studio 2008. Я столкнулся с этой проблемой, когда он не мог найти vcvarsall.bat, даже если он был на пути.

Оказывается, Visual Studio 2010 создает следующую переменную среды:

SET VS100COMNTOOLS=C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\

Исправление заключается в создании переменной с именем VS90COMNTOOLS и укажите на эту папку общих инструментов Visual Studio 2010, например

SET VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\

Это исправило это для меня, и теперь я могу создавать пакеты, используя компилятор Visual Studio 2010.

Вы также можете установить переменную среды VS90 так, чтобы она указывала на переменную среды VS100, используя следующую команду:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

Вот простое решение. Я использую Python 2.7 и Windows 7.

То, что вы пытаетесь установить, требует компилятора C/C++, но Python не находит его. Многие пакеты Python написаны на C/C++ и должны быть скомпилированы. vcvarsall.bat необходим для компиляции C++, и pip предполагает, что ваша машина может это сделать.

  1. Попробуйте сначала обновить setuptools, потому что v6.0 и выше автоматически обнаружат компилятор. Возможно, у вас уже есть компилятор, но Python не может его найти. Откройте командную строку и введите:

    pip install --upgrade setuptools

  2. Теперь попробуйте установить пакет снова:

    pip install [yourpackagename]

  3. Если это не сработало, то наверняка у вас нет компилятора, поэтому вам нужно установить его:
    http://www.microsoft.com/en-us/download/details.aspx?id=44266

  4. Теперь попробуйте еще раз:

    pip install [yourpackagename]

И вот, пожалуйста. Это должно работать для вас.

Решением этой проблемы является установка следующей переменной среды:

VS90COMNTOOLS

Например:

set VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools

Эта ошибка может быть вызвана не перезагрузкой после установки Visual Studios или не запуском новой командной строки после установки.

Кроме того, версия Visual Studios, которую вы можете использовать для компиляции расширений, может зависеть от версии Python, для которой вы строите.

В 2015 году, если вы по-прежнему получаете эту непонятную ошибку, обвините установочные инструменты Python по умолчанию, которые использует PIP.

  1. Загрузите и установите минимальный компилятор Microsoft Visual C++ для Python 2.7, необходимый для компиляции модулей python 2.7, по http://www.microsoft.com/en-in/download/details.aspx?id=44266
  2. Обновите ваши настройки - pip install -U setuptools
  3. Установите любой пакет Python, который вы хотите, который требует компиляции Си. pip install blahblah

Это будет работать нормально.

ОБНОВЛЕНИЕ: это не будет работать хорошо для всех библиотек. Я все еще получаю сообщение об ошибке с несколькими модулями, для которых требуются заголовки lib. Единственное, что работает безупречно, это платформа Linux

Эта загадочная ошибка означает, что у вас не установлен компилятор Си. Было обсуждение, чтобы предложить более объяснительную ошибку (которая продолжается здесь, зарегистрируйтесь и прокомментируйте, если вы заботитесь об этом!), Но в настоящее время она все еще не реализована.

Чтобы устранить эту проблему, вы можете либо установить Visual Studio 2008 SDK, который займет около ГБ, либо установить очень маленький файл VCForPython27.msi, который в настоящее время не очень хорошо поддерживается distutils, вот процедура:

1) install Microsoft Visual C++ Compiler for Python 2.7 from
http://www.microsoft.com/en-us/download/details.aspx?id=44266
2) Enter MSVC for Python command prompt
3) SET DISTUTILS_USE_SDK=1
4) SET MSSdk=1
5) you can then build your C extensions: python.exe setup.py ...

Шаги 2–4 должны быть воспроизведены каждый раз перед созданием ваших расширений C. Это происходит из-за проблемы с VCForPython27.msi, который устанавливает заголовочные файлы и vcvarsall.bat в папки другого макета, чем VS2008 SDK, и, таким образом, путает обнаружение компилятором distutils. Это будет исправлено в setuptools в Python 2.7.10.

Сообщение об ошибке и решение проблемы Грегори Сзорц: http://bugs.python.org/issue23246

Дополнительная информация и обходной путь для использования %%cython magic внутри IPython: https://github.com/cython/cython/wiki/CythonExtensionsOnWindows

/ РЕДАКТИРОВАТЬ: Кроме того, если у вас есть другая версия Python, вы не можете использовать Microsoft Visual C++ для Python 2.7, который является своего рода мини-компилятором, специально созданным Microsoft для Python 2.7. В этом случае вам необходимо установить Visual Studio SDK, соответствующий вашей версии Python, или Windows SDK с правильной версией NET Framework. Смотрите здесь для получения дополнительной информации: https://github.com/cython/cython/wiki/CythonExtensionsOnWindows

Это сработало для меня (Python 2.6):

установлены free ms visual studio 2008 от http://www.microsoft.com/visualstudio/en-us/products/2008-editions/express

скопированный vcvarsall.bat от "C:\Program Files\Microsoft Visual Studio 9.0\VC>" в "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\"

установщик уже установил эту переменную среды:

VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\

Похоже, MS выпустила точный пакет, необходимый здесь. BurnBit здесь. Установите его, а затем задайте ключи реестра в этом ответе, чтобы они указывали на C:\Users\username\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0

Если вы установили Visual Studio 2015 с помощью быстрой установки, vcvarsall.bat там не будет. Но вы можете перейти к программированию и функциональности и изменить установку для установки инструментов C++, тогда будет присутствовать vcvarsall.bat.

Установка Visual C++ - хороший первый шаг, хотя я не мог точно сказать , будет ли работать версия 2010 года. В любом случае, попробуйте.

Ищу vcvarsall.bat в установочном каталоге Visual C++ (для Visual Studio 2010 он находится в ProgramFiles\Microsoft Visual Studio 10.0\VC). Затем добавьте этот каталог в системный путь. Если вы делаете это в командной строке, вы можете попробовать:

path %path%;c:\path\to\vs2010\bin

затем попробуйте снова запустить все, что вы пытались запустить.

Для более постоянного эффекта добавьте его в настройках системного пути компьютера.

ЭТО ДО ДНЯ ОТВЕТА ДЛЯ ПОЛЬЗОВАТЕЛЕЙ WINDOWS - ОЧЕНЬ ПРОСТОЕ РЕШЕНИЕ.

Как указывают другие, проблема в том, что python / cython и т. Д. Пытается найти тот же компилятор, из которого они были созданы, но этот компилятор не существует на компьютере. В большинстве случаев этот компилятор является версией Visual Studio (2008, 2010 или 2013), но либо такой компилятор не установлен, либо установлена ​​более новая версия, и система не позволяет установить более старую. Итак, решение простое:

1) посмотрите на C:\Program Files (x86) и посмотрите, есть ли установленная версия Microsoft visual studio, и является ли она более новой, чем версия, из которой был построен Python. Если нет, установите (/update to) версию, из которой был построен Python (см. Предыдущие ответы), или даже самую новую версию и выполните следующий шаг.

2) Если последняя версия Microsoft visual studio уже установлена, мы должны заставить Python/cython и т. Д. Полагать, что это версия, из которой она была построена. И это очень просто: перейдите к системным переменным среды и создайте следующие переменные, если они не существуют:

VS100COMNTOOLS

VS110COMNTOOLS

VS120COMNTOOLS

VS140COMNTOOLS

И установите поле этих переменных в

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools" (если установлена ​​Visual Studio 2008) или "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools" (если установлена ​​Visual Studio 2010) или "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools" (если установлена ​​Visual Studio 2013) или "C:\Program Files (x86)\Microsoft Visual Studio 14.0\". Common7 \ Tools "(если установлена ​​Visual Studio 2015).

Это решение работает для 32-битных версий Python. Это может также работать для 64-битной версии, но я не проверял; скорее всего, для 64-битных версий необходимо выполнить следующие дополнительные шаги:

3) добавьте путь "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC" к переменной среды%PATH% (измените номер версии Visual Studio в соответствии с вашей версией).

4) из командной строки запустите "vcvarsall.bat x86_amd64"

Это все.

Перепробовав все варианты, доступные в каждом потоке, я решил покопаться в источнике, чтобы найти решение.

Отредактируйте свой $PythonPath/Lib/distutils/_msvccompiler.py

найти def _find_vcvarsall(plat_spec):Добавить в качестве следующей строки, добавить

    PathToVC=r"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
    return PathToVC, r""

И затем убедитесь, что ваш каталог визуальной студии bin находится на вашем пути.

Если это не работает, есть другие файлы, которые вам нужно отредактировать, включая:

  • $ PYTHONPATH /Lib/ Distutils / msvc9compiler.py
  • $ PYTHONPATH /Lib/ сайт-пакеты / Setuptools/msvc9_support.py

На случай, если кто-нибудь придет сюда в поисках ответа для Python 3.5; вам нужна Visual Studio 2015.

Загрузите Visual Studio 2015 Community здесь: https://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs.aspx, это сработало для меня без каких-либо дополнительных шагов.

Большое спасибо Ионелу, видимо, единственному месту в сети, где можно найти эту информацию! http://blog.ionelmc.ro/2014/12/21/compiling-python-extensions-on-windows/

Я попробовал решение здесь, чтобы установить переменную среды через командную строку, но это не сработало. Я делал это как из обычной командной строки, так и из командной строки Visual Studio Developer.

Я мог бы преодолеть эту проблему следующим образом:

  1. перейдите на экран переменных среды и создайте новую переменную там VS100COMNTOOLS и дайте ей указывать на мою папку установки Visual Studio C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\
  2. Перейдите в вышеуказанную папку. Внутри этой папки находится файл vsvars32.bat. Скопируйте этот файл и переименуйте его в vsvarsall.bat

Моя конфигурация Visual Studio 2013 (12.0) и Python 3.4.2

Обратите внимание, что есть очень простое решение.

  1. Загрузите программное обеспечение с http://www.microsoft.com/en-us/download/details.aspx?id=44266 и установите его.

  2. Найдите каталог установки, это что-то вроде "C:\Users\USER_NAME\AppData\Local\Programs\Common\Microsoft\Visual C++ для Python"

  3. Измените имя каталога "C:\Users\USER_NAME\AppData\Local\Programs\Common\Microsoft\Visual C++ для Python\9.0" на "C:\Users\USER_NAME\AppData\Local\Programs\Common\Microsoft\Visual C++". для Python \ VC "

  4. Добавьте новую переменную среды "VS90COMNTOOLS", и ее значение будет "C:\Users\USER_NAME\AppData\Local\Programs\Common\Microsoft\Visual C++ для Python \ VC \ VC"

Сейчас все нормально.

Установите Visual Studio Express 2008 (9.0) отсюда: http://go.microsoft.com/?linkid=7729279

Вот что исправило это для меня.

Я также получал эту ошибку : требуется Microsoft Visual C++ 10.0 (невозможно найти vcvarsall.bat).

Я использовал для установки файл .whl.

      C:\Users\Python\Python34\Scripts>pip install C:\Users\Downloads\Cython-0.28-cp34-cp34m-win_amd64.whl

Cython-0.28-cp34-cp34m-win_amd64.whl не поддерживается на этой платформе.

переименуйте cp34m в none в файле .whl и попробуйте.

      C:\Users\Python\Python34\Scripts>pip install C:\Users\Downloads\Cython-0.28-cp34-none-win_amd64.whl

Обработка c: \ users \ downloads \ cython-0.28-cp34-none-win_amd64.whl

Установка собранных пакетов:Cython

Успешно установлен Cython-0.28

После установки Visual Studio Community 2015 Edition на Windows 10 64 бит. Эта ошибка не пошла. Затем я устанавливаю компилятор Microsoft Visual C++ для Python 2.7. Поскольку это требует vcvarsall.bat файл. Этот файл отсутствует в Visual Studio Community 2015, но он был в компиляторе Microsoft Visual C++ для Python 2.7. Я также добавил его путь в переменные окружения, но он также не работал. Затем я удаляю python 3.4.2 и удаляю все папки python, и устанавливаю python 2.7. Наконец, я запустил pip с помощью powershell и смог установить необходимый пакет, например, flask-user, используя.

pip install flask-user

Для Windows существует запутанный крайний случай. Если вы последуете совету по установке Windows 2007, и вы все еще получаете эту ошибку при выполнении python setup.py install напрямую, тогда может случиться так, что setup.py использует старую версию инструментов настройки.

В частности, код, указывающий окна в правильное место для установленного компилятора Windows, находится в __init__ метод библиотеки setuptools, что означает, что вы должны в своем файле setup.py использовать модуль setuptools. Некоторые старые методы вызова setup.py напрямую из distutils.core, Если это так, то setup.py никогда не найдет установленный компилятор Windows. Это можно исправить, просто написав import setuptools в первой строке файла setup.py.

https://bugs.python.org/issue23246: Посмотрите на полпути цитаты Стива Дауэра:

Setuptools имеет код для поиска пакета компилятора. Мы сознательно поместили его туда, а не в distutils, чтобы убедиться, что больше людей получат его. Возможно, мне следует перенести дополнительную проверку в 2.7.10, но немедленное решение - импортировать setuptools.

Другие вопросы по тегам