Не удается найти vcvarsall.bat при запуске скрипта Python - PullRequest
59 голосов
/ 19 апреля 2010

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

cannot find vcvarsall.bat

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

Ответы [ 17 ]

43 голосов
/ 16 января 2012

Кажется, что 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%
26 голосов
/ 30 ноября 2014

Вот простое решение . Я использую 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]

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

14 голосов
/ 28 июня 2011

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

VS90COMNTOOLS

Например:

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

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

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

9 голосов
/ 02 апреля 2015

В 2015 , если вы все еще получаете эту запутанную ошибку, обвиняют python по умолчанию в setuptools , который использует 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

6 голосов
/ 05 апреля 2015

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

Чтобы устранить эту проблему, вы можете либо установить 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.

Сообщение об ошибке и обходной путь от Gregory Szorc: http://bugs.python.org/issue23246

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

/ EDIT: Кроме того, если у вас есть другая версия 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#using-windows-sdk-cc-compiler-works-for-all-python-versions

5 голосов
/ 26 декабря 2011

это сработало для меня (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\
4 голосов
/ 07 октября 2014

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

3 голосов
/ 12 сентября 2016

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

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

1) посмотрите на C: \ Program Files (x86) и посмотрите, существует ли установленная версия Microsoft visual studio, и является ли она более новой, чем версия, из которой был построен Python. Если нет, установите (/ обновите до) версию, из которой был построен 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"

Вот и все.

3 голосов
/ 22 января 2016

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

3 голосов
/ 19 апреля 2010

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...