ошибка: не удается найти vcvarsall.bat - PullRequest
838 голосов
/ 12 мая 2010

Я пытался установить пакет Python dulwich :

pip install dulwich

Но я получаю загадочное сообщение об ошибке:

error: Unable to find vcvarsall.bat

То же самое происходит, если я пытаюсь установить пакет вручную:

> python setup.py install
running build_ext
building 'dulwich._objects' extension
error: Unable to find vcvarsall.bat

Ответы [ 41 ]

9 голосов
/ 05 апреля 2013

Может быть, кому-то будет интересно, у меня сработало следующее для пакета py2exe. (У меня Windows 7 64-битная и переносимый Python 2.7, Visual Studio 2005 Express с Windows SDK для Windows 7 и .NET Framework 4)

set VS90COMNTOOLS=%VS80COMNTOOLS%

тогда:

python.exe setup.py install
8 голосов
/ 15 марта 2015

Я потратил почти 2 дня, чтобы понять, как исправить эту проблему в моей 64-битной версии python 3.4: Python 3.4.3 (v3.4.3: 9b73f1c3e601, 24 февраля 2015 г., 22:44:40) [MSC v.1600 64 бит (AMD64)] на win32

Решение 1, сложное: (прежде чем читать это, прочтите первое Решение 2 ниже) Наконец, вот что мне помогло:

  1. установка Visual C ++ 2010 Express
  2. установка Microsoft Windows SDK v7.1 для Windows 7
  3. создайте вручную файл vcvars64.bat в C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64, который содержит CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 или другой путь в зависимости от того, где у вас установлен
  4. (это необязательно) установить Microsoft Visual Studio 2010 с пакетом обновления 1 вместе с Обновление компилятора Microsoft Visual C ++ 2010 с пакетом обновления 1 (SP1) для Windows SDK 7.1
  5. после этого я попытался pip install numpy, но получил следующую ошибку:

    File "numpy\core\setup.py", line 686, in get_mathlib_info
    raise RuntimeError("Broken toolchain: cannot link a simple C program")
    RuntimeError: Broken toolchain: cannot link a simple C program
    

    Я изменил mfinfo на None в C:\Python34\Lib\distutils\msvc9compiler.py за это https://stackoverflow.com/a/23099820/4383472

  6. наконец, после команды pip install numpy мой антивирус avast попытался вмешаться в процесс установки, но я быстро отключил его

Это заняло очень много времени - несколько минут, чтобы numpy скомпилировался, я даже подумал, что произошла ошибка, но в конце концов все было в порядке.

Решение 2, просто: (Я знаю, что этот подход уже упоминался в ответе с большим количеством голосов, но позвольте мне повторить, поскольку это действительно проще) Пройдя всю эту работу, я понял, что лучший способ для меня - это просто использовать уже скомпилированные двоичные файлы из http://www.lfd.uci.edu/~gohlke/pythonlibs/ в будущем. Существует очень небольшая вероятность того, что мне когда-нибудь понадобится какой-то пакет (или версия пакета), который не содержится на этом сайте. Процесс установки также намного быстрее. Например, для установки numpy:

  1. donwload numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl (если у вас Python 3.4 64-bit) с этого сайта
  2. в командной строке или powershell установите его с помощью pip pip install numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl (или полного пути к файлу в зависимости от того, как открывается командная строка)
7 голосов
/ 30 октября 2015

Я столкнулся с этой проблемой, когда пытался установить библиотеку numpy на моем python 3.5. Решение заключается в установке VS2015. У меня была VS2008, 2012, 2013, ни одна из которых не совместима с python 3.5. Очевидно, что более новая версия python зависит от более новых версий VS.

Также убедитесь, что C ++ Common Tools установлены вместе с Visual Studio.

enter image description here

7 голосов
/ 08 декабря 2015

Я хотел запустить pysph в Windows 10 под Python 2.7 и получил vcvarsall.bat не найден (из distutils)

Мое решение было следующим:

Установите Microsoft Visual C ++ для Python 2.7 (как предложил @Michael)

В Windows 10 он был установлен в (мое имя пользователя Andreas):

C:\Users\Andreas\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0

Задайте для переменной среды VS90COMNTOOLS путь установки Visual C ++ для Python 2.7 (см. Путь выше).

Если это все еще не работает, тогда внесите изменения в модуль

C:/Python27/lib/distutils

файл msvc9compiler.py . Найдите в нем функцию find_vcvarsall и выполните следующую модификацию.

Заменить строку:

productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")

с

productdir = os.path.join(toolsdir)

Это где vcvarsall.bat находится в моем случае (проверьте, где vcvarsall.bat находится в вашей установке).

6 голосов
/ 20 ноября 2014

У меня была эта проблема при использовании Python 3.4.1 в Windows 7 x64 , и, к сожалению, в необходимых мне пакетах не было подходящего exe или колесика, которые я мог бы использовать. Эта система требует нескольких «обходных путей», которые подробно описаны ниже (и TLDR внизу ).

Используя информацию из ответа Jaxrtech выше , я решил, что мне нужна Visual Studio C ++ 2010 (sys.version return MSC v.1600), поэтому я установил Visual C ++ 2010 Express по ссылке в его ответе, http://go.microsoft.com/?linkid=9709949. Я установил все с обновлениями, но, как вы можете прочитать ниже, это было ошибкой. В настоящее время должна быть установлена ​​только оригинальная версия Express (ничего не обновляется).

vcvarsall.bat теперь присутствовал, но при установке пакета возникла новая ошибка, query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']. С этой ошибкой связаны и другие вопросы, связанные с переполнением стека, например Ошибки при сборке / установке модуля C для Python 2.7

Из этого ответа я определил, что в 2010 Express устанавливаются только 32-разрядные компиляторы. Чтобы получить 64-битные (и другие) компиляторы, вам нужно установить Windows 7.1 SDK. Смотри http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx

Это не установит для меня, хотя, и установщик возвратил ошибку installation failed with return code 5100. Я нашел решение по следующей ссылке: http://support.microsoft.com/kb/2717426. Короче говоря, если установлены более новые версии распространяемых пакетов Microsoft Visual C ++ 2010 для x86 и x64, они конфликтуют с теми, которые есть в установщике SDK, и сначала их нужно удалить.

Затем SDK установлен, но я заметил, что vcvars64.bat по-прежнему не существует ни в C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin, ни в его подпапках. vcvarsall.bat запускает пакетный файл vcvars64, поэтому без него пакет python все равно не установится (я забыл ошибку, которая была показана в это время).

Затем я нашел здесь несколько инструкций: http://www.cryptohaze.com/wiki/index.php/Windows_7_Build_Setup#Download_VS_2010_and_Windows_SDK_7.1 Следуя инструкциям, я уже установил Express и 7.1 SDK, поэтому установил SDK 7.1 SP1 и исправил отсутствующий файл заголовка. Затем я вручную создал vcvars64.bat с содержанием CALL setenv /x64. Я вставлю сюда все эти инструкции, чтобы они не потерялись.

Шаг 1 - загрузить Visual Studio Express 2010.

http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express это хорошее место для начала. Загрузите установщик и запустите его (Vc_web.exe). Вам не нужна дополнительная загрузка SQL 2008.

Вам также понадобится Windows SDK (в настоящее время 7.1) для 64-разрядных систем. компиляторы - если вы не хотите делать только 32-битные сборки, которые не являются полностью поддерживается ...

http://www.microsoft.com/en-us/download/details.aspx?id=8279 - это хорошо отправная точка, чтобы загрузить это - вы захотите запустить winsdk_web.exe при загрузке!

Установка по умолчанию здесь просто прекрасна.

Наконец, загрузите и установите обновление Windows SDK 7.1 SP1: http://www.microsoft.com/en-us/download/details.aspx?id=4422

И, чтобы исправить отсутствующий заголовочный файл, VS2010 SP1. http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5

И, черт возьми, исправь недостающий пакетный файл для VS2010 Express. это становится совершенно абсурдным.

В C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ amd64, создайте "vcvars64.bat" со следующим (вам нужно будет запустить как администратор):

CALL setenv / x64

Мой пакет python все еще не установлен (ошибка не может вспомнить). Затем я нашел несколько инструкций (скопированных ниже) для использования специальной командной строки SDK 7.1, см .: https://mail.python.org/pipermail/distutils-sig/2012-February/018300.html

Не обращайте внимания на этот вопрос. Кто-то здесь заметил этот пункт в меню: Пуск-> Все программы-> Microsoft Windows SDK v7.1 -> Командная строка Windows SDK 7.1

Это запускает пакетное задание, которое, похоже, устанавливает рабочую среду для компилятора. В этом приглашении вы можете ввести «setup.py build» или «setup.py install».

Я открыл командную строку Windows SDK 7.1 в соответствии с инструкциями и использовал ее для запуска easy_install в пакете python. И наконец, успехов!


TLDR ;

  1. Установите Visual Studio Express 2010 (желательно без обновленных распространяемых файлов или сервера SQL).
  2. Установка Windows 7.1 SDK
  3. Установка пакета обновления SDK 7.1 SP1 и исправление файла заголовка VS2010 SP1 (этот шаг может не потребоваться).
  4. Создать вручную C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat с контентом CALL setenv /x64
  5. Пуск-> Все программы-> Microsoft Windows SDK v7.1 -> Windows SDK 7.1 Командная строка, чтобы открыть специальную командную строку x64, которую затем можно использовать с python / easy_install / pip / etc (включая те, которые находятся в virtual_envs).
6 голосов
/ 22 января 2014

Вы можете скачать бесплатную Visual C ++ 2008 Express Edition с http://go.microsoft.com/?linkid=7729279,, которая установит переменную среды VS90COMNTOOLS во время установки и, следовательно, соберет совместимый компилятор.

Как упомянул @PiotrDobrogost в комментарии, его ответ на этот другой вопрос детально объясняет, почему Visual C ++ 2008 является правильным вариантом для сборки, но это может измениться, когда сборка Python для Windows переходит на более новые версии Visual Studio. : Сборка lxml для Python 2.7 в Windows

6 голосов
/ 12 июня 2013

Я перепробовал все приведенные выше ответы и обнаружил, что все они не работают. Возможно, я использовал Windows 8 и установил Visual Studio 2012. В данном случае это то, что вы делаете.

Файл vcvarsall.bat находится здесь: C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC

Просто выберите файл и скопируйте его.

Затем перейдите в этот каталог: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools

и вставьте файл. И тогда все должно быть хорошо.

3 голосов
/ 22 мая 2015

Если у вас установлен mingw

pip install --global-option build_ext --global-option --compiler=mingw32 packagename

работает, заставляя pip собираться с использованием компилятора mingw вместо Microsoft. Подробнее см. Здесь https://github.com/pypa/pip/issues/18 (последнее сообщение).

3 голосов
/ 11 декабря 2017

Ниже описана эта проблема, я пытался создать установку с расширением Cython.

  1. Установить компилятор Microsoft Visual C ++ для Python 2.7
  2. Расположение по умолчанию будет@ C: \ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ для Python Это может на самом деле решить проблему, протестируйте один раз, прежде чем продолжить.
  3. Если это не удается, проверьте, где в VC ++ для python находится файл vcvarsall.bat
  4. Откройте файл msvc9compiler.py пакета distutils в блокноте.
  5. В моей коробке это была функция @ C: \ Anaconda2 \ Lib \ distutils \ msvc9compiler.py find_vcvarsall в этом файле, определяющая версию VC, распечатывая аргумент версии.Для Python 2.7 это, вероятно, будет 9.0
  6. . Теперь создайте переменную среды VS90COMNTOOLS, указывающую на C: \ Users \ PC-user \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ для Python \ 9.0 \ VC\ bin
  7. По некоторым причинам distutils ожидает, что файл vcvarsall.bat находится в каталоге VC, но VC ++ для инструментов python содержит его в корне из 9.0. Чтобы исправить это, удалите "VC" из пути.join (примерно в строке 247)

    #productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC") productdir = os.path.join(toolsdir, os.pardir, os.pardir)

Вышеуказанные шаги устранили проблему для меня.

3 голосов
/ 26 ноября 2015

Разве компилятор Microsoft Visual C ++ для Python 2.7 на http://www.microsoft.com/en-us/download/details.aspx?id=44266 не является решением?

...