ошибка: не удается найти vcvarsall.bat

862

Я попытался установить пакет 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
  • 6
    Для дальнейшего использования было бы неплохо увидеть, на какой платформе вы используете это.
  • 0
    Связанный: Как я могу указать easy_install на vcvarsall.bat?
Показать ещё 9 комментариев
Теги:
pip
setup.py
failed-installation

41 ответ

680

Обновить. Комментарии указывают на то, что инструкции здесь могут быть опасными. Рассмотрите возможность использования версии Visual С++ 2008 Express или специально созданного Microsoft Visual С++ Compiler for Python (подробнее) и НЕ, используя исходный ответ ниже. Исходное сообщение об ошибке означает, что требуемая версия Visual С++ не установлена.


Для установок Windows:

При запуске setup.py для установки пакетов Python 2.7 ищет установленную Visual Studio 2008. Вы можете обмануть Python для использования новой Visual Studio, установив правильный путь в переменной среды VS90COMNTOOLS перед вызовом setup.py.

Выполните следующую команду на основе установленной версии Visual Studio:

  • Visual Studio 2010 (VS10): SET VS90COMNTOOLS=%VS100COMNTOOLS%
  • Visual Studio 2012 (VS11): SET VS90COMNTOOLS=%VS110COMNTOOLS%
  • Visual Studio 2013 (VS12): SET VS90COMNTOOLS=%VS120COMNTOOLS%
  • Visual Studio 2015 (VS14): SET VS90COMNTOOLS=%VS140COMNTOOLS%

ПРЕДУПРЕЖДЕНИЕ. Как отмечено ниже, этот ответ вряд ли будет работать, если вы пытаетесь скомпилировать модули python.

Подробнее см. Создание lxml для Python 2.7 в Windows.

  • 2
    Не работает: error: \Microsoft was unexpected at this time.
  • 21
    Это сделал для меня :(
Показать ещё 27 комментариев
224

Я нашел решение. У меня была такая же проблема, и ошибка, установив "amara". У меня был установлен mingw32, но нужно было настроить distutils.

  • У меня уже установлен Python 2.6.
  • Я установил mingw32 в C:\programs\mingw\
  • Добавьте каталог bin mingw32 в переменную среды: добавьте c:\programs\MinGW\bin; в PATH
  • Изменить (создать, если не существует) файл distutils.cfg, расположенный в C:\Python26\Lib\distutils\distutils.cfg, чтобы быть:

    [build]
    compiler=mingw32
    
  • Теперь запустите easy_install.exe amara.

Убедитесь, что среда установлена, открыв новый cmd.exe.

  • 1
    '[build]' и 'compiler = mingw32' должны быть в двух отдельных строках. Разметка, кажется, немного испортила.
  • 45
    Это прекрасно работает для Python2.6, но по некоторым причинам я не могу заставить его работать на Python2.7. Это работает, если я загружаю исходный код пакета и устанавливаю его с помощью 'python setup.py install --compile = mingw32', но по какой-то причине с помощью easy_install или pip все равно пытаюсь найти vcvarsall.
Показать ещё 10 комментариев
222

Вы можете установить скомпилированную версию из http://www.lfd.uci.edu/~gohlke/pythonlibs/

  • 15
    просто совет: вы можете установить пакет с этого сайта в virtualenv, запустив easy_install binary_installer_built_with_distutils.exe в virtualenv, в соответствии с этим ответом .
  • 14
    Каждый разработчик Python для Windows должен знать об этом
Показать ещё 3 комментария
147

Если вы хотите скомпилировать с Visual Studio C++ вместо mingw...

  1. Запустите python.exe чтобы увидеть, с какой версией V C++ он был скомпилирован (пример показан ниже).

    Важно использовать соответствующую версию компилятора Visual C++, с которой был скомпилирован Python, поскольку distilutils get_build_version предотвращает смешивание версий (согласно предупреждению Петра).

    • Желтый (вверху) - это Python 2.7, скомпилированный с MSC v.1500 (Visual Studio C++ 2008)
    • Красный (внизу) - Python 3.4.1, скомпилированный с MSC v.1600 (Visual Studio C++ 2010)

    Изображение 2511

  2. Используйте приведенную ниже таблицу [1], чтобы сопоставить внутреннюю версию V C++ с соответствующим выпуском Visual Studio:

    MSC v.1000 -> Visual C++ 4.x        
    MSC v.1100 -> Visual C++ 5          
    MSC v.1200 -> Visual C++ 6          
    MSC v.1300 -> Visual C++ .NET       
    MSC v.1310 -> Visual C++ .NET 2003  
    MSC v.1400 -> Visual C++ 2005  (8.0)
    MSC v.1500 -> Visual C++ 2008  (9.0)
    MSC v.1600 -> Visual C++ 2010 (10.0)
    MSC v.1700 -> Visual C++ 2012 (11.0)
    MSC v.1800 -> Visual C++ 2013 (12.0)
    MSC v.1900 -> Visual C++ 2015 (14.0)
    MSC v.1910 -> Visual C++ 2017 (15.0)
    MSC v.1911 -> Visual C++ 2017 (15.3)
    MSC v.1912 -> Visual C++ 2017 (15.5)
    MSC v.1913 -> Visual C++ 2017 (15.6)
    MSC v.1914 -> Visual C++ 2017 (15.7)
    MSC v.1915 -> Visual C++ 2017 (15.8)
    MSC v.1916 -> Visual C++ 2017 (15.9)   
    
  3. Загрузите и установите соответствующую версию Visual Studio C++ из предыдущего шага.
    Дополнительные примечания для конкретных версий V C++ перечислены ниже.

    Примечания для Visual Studio C++ 2008

    Загрузите только Visual Studio C++ 2008 Express Edition, только для битовых компиляторов 32-.

    Для 64-разрядных компиляторов [2][3] загрузите Windows SDK для Windows 7 и.NET Framework 3.5 SP1.

    • Снимите все, кроме Developer Tools >> Visual C++ Compilers чтобы сэкономить время и дисковое пространство от установки инструментов SDK, которые в противном случае вам не нужны.

    Примечания для Visual Studio C++ 2010

    Согласно Microsoft, если вы установили Visual Studio 2010 с пакетом обновления 1 (SP1), возможно, были удалены компиляторы и библиотеки для V C++.
    В этом случае загрузите обновление компилятора Visual C++ 2010 SP1.

    Примечания для Visual Studio C++ 2015

    Если вам не нужна среда разработки Visual Studio, загрузите инструменты сборки Visual Studio C++ 2015.

    Примечания для Visual Studio C++ 2017

    Если вам не нужна среда разработки Visual Studio, загрузите инструменты сборки для Visual Studio 2017.

    Предложение: Если у вас есть 32- и 64-битная установка Python, вы также можете использовать virtualenv для создания отдельных сред Python, чтобы вы могли использовать одну или другую за один раз, не перепутав свой путь, чтобы выбрать, какую версию Python использовать.

Согласно @srodriguex, вы можете пропустить загрузку пакетного файла вручную (шаги 4-6), вместо этого скопировав несколько пакетных файлов туда, где ищет Python, следуя этому ответу. Если это не сработает, вот следующие шаги, которые изначально работали для меня.

  1. Откройте cmd.exe

  2. Прежде чем пытаться установить что-либо, требующее расширения C, запустите следующий пакетный файл, чтобы загрузить среду компилятора V C++ в сеанс (т.е. Переменные среды, путь к компилятору и т.д.).

    Выполнение:

    • 32- бит Компиляторы:

      Примечание: 32- битная установка Windows будет иметь только C:\Program Files\ как и ожидалось

      "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"

    • 64-битные компиляторы:

      "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars64.bat"

      Примечание. Да, нативные 64-битные компиляторы находятся в Program Files (x86). Не спрашивай меня почему.
      Кроме того, если вам интересно, в чем разница между vcvars64.bat и vcvarsx86_amd64.bat или, что более важно, в разнице между amd64 и x86_amd64, первые предназначены для встроенных инструментов 64-разрядных компиляторов, а вторые - это 64-разрядные кросс-компиляторы, которые могут запустить на 32- битной установке Windows.

    Обновить:
    Если по какой-либо причине вы получаете error:... was unexpected at this time. где ... - это некоторая серия символов, то вам нужно убедиться, что в переменной пути нет никаких посторонних символов, таких как дополнительные кавычки или случайные символы. Пакетный файл не сможет обновить ваш путь к сеансу, если он не может понять его с самого начала.

  3. Если все прошло хорошо, вы должны получить одно из следующих сообщений в зависимости от того, какую версию V C++ и какую команду вы выполняли:

    Для инструментов компилятора битов 32-:
    Setting environment for using Microsoft Visual Studio 20xx x86 tools.

    Для инструментов 64-битного компилятора:
    Setting environment for using Microsoft Visual Studio 20xx x64 tools.

  4. Теперь запустите установку через python setup.py install или pip install pkg-name

  5. Надеюсь и скрестим пальцы, что планеты выровнены правильно для взаимодействия V C++.

  • 0
    Не могу рекомендовать достаточно , что вы пройти через боль сразу переходить на 64 бит. Это просто вопрос времени, прежде чем вам понадобится более 4 ГБ адресного пространства. Я говорю из мучительного опыта после перехода на 32-разрядную версию, потому что это было намного проще, чем необходимость удаления всего, включая зависимости и переход на 64-разрядную версию. Почти целые выходные.
  • 1
    Опять же, я забываю, как много людей будут использовать Python для гораздо больших задач, подобных этому. И @ThomasBrowne, я уверен, что это было болезненное и ненужное зло опыта. Я смотрю на это, и, надеюсь, я смогу что-то найти. Основная проблема заключалась в том, что Visual Studio C ++ 2008 Express не поставляется с 64-битным компилятором, но я уверен, что где-то здесь.
Показать ещё 7 комментариев
73

Что происходит? Модули Python могут быть записаны на C или C++ (как правило, для скорости). Если вы попытаетесь установить такой пакет с помощью Pip (или setup.py), он должен скомпилировать этот C/C++ из источника. Из коробки Pip нагло возьмет на себя компилятор Microsoft Visual C++. Если у вас его нет, вы увидите это загадочное сообщение об ошибке "Ошибка: не удалось найти vcvarsall.bat".

Предложенное решение - установить компилятор C/C++, либо Microsoft Visual C++, либо MinGW (проект с открытым исходным кодом). Тем не менее, установка и настройка запрещены. (Edit 2014: Microsoft опубликовала специальный компилятор C++ для Python 2.7)

Самое простое решение - использовать установщики Windows Christoph Gohlke (.msi) для популярных пакетов Python. Он строит инсталляторы для Python 2.x и 3.x, 32 бит и 64 бит. Вы можете скачать их с http://www.lfd.uci.edu/~gohlke/pythonlibs/


Если вы тоже думаете, что "Ошибка: не удалось найти vcvarsall.bat" - это смехотворное загадочное и бесполезное сообщение, пожалуйста, прокомментируйте ошибку на http://bugs.python.org/issue2943, чтобы заменить ее более полезными и удобными для пользователя, дружелюбное сообщение.

Для сравнения, Ruby поставляется с менеджером пакетов Gem и предлагает квази-официальный компилятор C/C++, DevKit. Если вы попытаетесь установить пакет без него, вы увидите это полезное полезное сообщение:

Обновите свой PATH, чтобы включить инструменты сборки или загрузить DevKit из http://rubyinstaller.org/downloads и следуйте инструкциям на странице http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

Вы можете прочитать более подробную информацию о упаковке Python на странице /questions/2057/does-python-have-a-packagemodule-management-system/23514#23514

  • 0
    Как я могу использовать pip для установки этого предварительно скомпилированного исполняемого файла в моей виртуальной среде?
  • 0
    @shailenTJ хороший вопрос. Я никогда не делал этого, но попробуйте stackoverflow.com/a/5442340/284795
Показать ещё 2 комментария
60

Вам понадобится установить компилятор Microsoft, совместимый с компилятором, используемым для создания Python. Это означает, что вам нужна Visual С++ 2008 (или более новая, с некоторой настройкой).

Microsoft теперь поставляет компилятор и заголовки в комплекте, чтобы иметь возможность компилировать расширения Python на незабываемый URL:

Компилятор Microsoft Visual С++ для Python 2.7

http://aka.ms/vcpython27

Это относительно небольшой пакет; 85 МБ для загрузки, установки без прав администратора, не требуется перезагрузка. Имя немного вводит в заблуждение, компилятор будет работать для любой версии Python, первоначально скомпилированной с Visual С++ 2008, а не только с Python 2.7.

Если вы запустите интерактивную подсказку Python или распечатаете sys.version, найдите строку версии MSC; если это MSC v.1500, вы можете использовать этот инструмент.

Из оригинального объявления в список distutils:

Microsoft выпустила пакет компилятора для Python 2.7, чтобы облегчить людям сбор и распространение своих модулей расширения C в Windows. Компилятор Microsoft Visual С++ для Python 2.7 (a.k.a. VC9) доступен из: http://aka.ms/vcpython27

Этот пакет содержит все инструменты и заголовки, необходимые для сборки модулей расширения C для 32-разрядных и 64-разрядных Python 2.7 (обратите внимание, что для некоторых модулей расширения требуются сторонние зависимости, такие как OpenSSL или libxml2, которые не включены). Другие версии Python, созданные с помощью Visual С++ 2008, также поддерживаются, поэтому "Python 2.7" - это просто реклама - он отлично работает с 2.6 и 3.2.

Обратите внимание, что вам необходимо установить setuptools 6.0 или новее (перечисленные в системных требованиях на странице загрузки). Проект, который вы устанавливаете, должен использовать setuptools.setup(), а не distutils или автоматическое обнаружение не будет работать.

Microsoft заявила, что хочет сохранить стабильный URL, чтобы автоматические скрипты могли легко ссылаться на нее.

  • 2
    Согласно моему другому комментарию, вы можете убедиться, что setuptools обновлен с помощью pip install setuptools --upgrade .
  • 0
    Я посмотрел на вопрос, почему соответствующая логика заключается в setuptools а не в distutils - в конце концов, сборка модулей - это базовая функциональность, и в ней есть соответствующий код, но его старая версия. Похоже, что сопровождающие distutils просто отказались от поддержки всех возможных вариантов MSSDK и свалили эту работу на своих коллег по setuptools которые были более заинтересованы.
Показать ещё 2 комментария
57

У меня просто была такая же проблема, поэтому я расскажу здесь свою историю, надеясь, что это поможет кому-то другому с теми же проблемами и сохранить их за пару часов, которые я только что провел:

У меня есть mingw (g++ (GCC) 4.6.1) и python 2.7.3 в окне Windows 7, и я пытаюсь установить PyCrypto.

Все началось с этой ошибки при запуске setup.py install:

error: Unable to find vcvarsall.bat

Легко решается после ошибки в ошибке, указав mingw в качестве компилятора выбора:

setup.py install build --compiler=mingw32

Проблема в том, что тогда я получил другую ошибку:

configure: error: cannot run C compiled programs.

Оказывается, мой антивирус блокировал выполнение только что скомпилированного .exe. Я просто отключил "резидентный экран" антивируса и перешел к следующей ошибке:

cc1.exe: error: unrecognized command line option '-mno-cygwin' 
error: command 'gcc' failed with exit status 1

Это решило: "Либо установите более старую версию MinGW, либо отредактируйте distutils\cygwinccompiler.py в вашем каталоге Python, чтобы удалить все экземпляры -mno-cygwin". (от здесь)

Теперь я могу наконец начать работать.

  • 7
    Вам также понадобится MinGW-совместимая версия библиотеки Python. Смотрите eli.thegreenplace.net/2008/06/28/… для получения дополнительной информации
24

Похоже, что он ищет компиляторы VC, поэтому вы можете попытаться указать тип компилятора с -c mingw32, так как у вас есть msys

python setup.py install -c mingw32
  • 16
    Просто для ясности, команда, которая работает: python setup.py build --compiler=mingw32 а затем python setup.py install
  • 0
    После запуска python setup.py build --compiler = mingw32 я получаю ImportError: нет модуля с именем Cython.Distutils, пока Cython установлен под Anaconda. Какие-либо предложения?
20

У меня есть python 2.73 и windows 7. Решение, которое сработало для меня, было:

  • Добавлен каталог bin bin в переменную среды: добавьте PATH с помощью C:\programs\mingw\bin;
  • Создан distutils.cfg, расположенный в C:\Python27\Lib\distutils\distutils.cfg, содержащий:

    [build]
    compiler=mingw32
    

Чтобы иметь дело с MinGW, который больше не распознает флаг -mno-cygwin, удалите флаг в C:\Python27\Lib\distutils\cygwincompiler.py строке 322 - 326, поэтому он выглядит так:

  self.set_executables(compiler='gcc -O -Wall',
                         compiler_so='gcc -mdll -O -Wall',
                         compiler_cxx='g++ -O -Wall',
                         linker_exe='gcc',
                         linker_so='%s %s %s'
                                    % (self.linker_dll, shared_option,
                                       entry_point))
16

Посмотрите в файле setup.py пакета, который вы пытаетесь установить. Если это более старый пакет, он может импортировать distutils.core.setup(), а не setuptools.setup().

Я столкнулся с этим (в 2015 году) с сочетанием этих факторов:

  • Компилятор Microsoft Visual С++ для Python 2.7 из http://aka.ms/vcpython27

  • Более старый пакет, в котором используется distutils.core.setup()

  • Попытка сделать python setup.py build вместо использования pip.

Если вы используете недавнюю версию pip, она заставит (monkeypatch) пакет использовать setuptools, даже если его setup.py вызывает distutils. Однако, если вы не используете pip и вместо этого выполняете python setup.py build, процесс сборки будет использовать distutils.core.setup(), который не знает о месте установки компилятора.


Решение

Шаг 1: Откройте соответствующую командную строку Visual С++ 2008

Откройте меню "Пуск" или "Начало" и выполните поиск "32-разрядной командной строки Visual С++ 2008" (если ваш питон 32-разрядный) или "64-разрядная командная строка Visual С++ 2008" (если ваш питон 64 -немного). Запустить его. Командная строка должна указать Visual С++ 2008... в строке заголовка.

Шаг 2: Установите переменные среды

Установите эти переменные среды в только что открывшейся командной строке.

SET DISTUTILS_USE_SDK=1
SET MSSdk=1

Ссылка http://bugs.python.org/issue23246

Шаг 3: Создайте и установите

cd к пакету, который вы хотите создать, и запустите python setup.py build, затем python setup.py install. Если вы хотите установить в virtualenv, активируйте его перед сборкой.

  • 0
    вы также можете собрать свой пакет, используя <code> pip </ code> вместо <code> python setup.py build </ code>
  • 2
    Сделал магию для меня! Спасибо за четкий ответ.
9

Может быть, кому-то может быть интересно, для работы с 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
  • 0
    Нет, вы правы, я не уверен, что случилось, я удалю оригинальный комментарий.
  • 1
    Очень полезно!! В моем случае я сделал «установить VS90COMNTOOLS =% VS110COMNTOOLS%».
Показать ещё 2 комментария
8

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

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

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

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

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

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

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

Установите Microsoft Visual С++ для Python 2.7 (например, предложил Майкл)

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

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

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

Если он все еще не работает, то modifiy в модуле

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 находится в вашей установке).

  • 0
    Интересно, что %userprofile%\Appdata\Local\Programs\Common пуст для меня.
  • 0
    Даже после установки Microsoft Visual C ++ для Python 2.7?
7

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

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

Изображение 2512

7

Я попробовал все вышеперечисленные ответы и нашел, что все они не работают, возможно, я использовал 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

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

  • 0
    Нет, все не так хорошо, я следовал вашему ответу, но все равно получаю ту же ошибку.
6

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

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

vcvarsall.bat теперь присутствует, но при установке пакета произошла новая ошибка, query_vcvarsall raise ValueError(str(list(result.keys())))ValueError: [u'path']. С этой ошибкой возникают другие проблемы с stackoverflow, такие как Ошибки при сборке/установке модуля 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. Короче говоря, если установлены более новые версии x86 и x64 Microsoft Visual С++ 2010 Redistributable, они конфликтуют с установками в установщике 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. И наконец, успех!


TL;DR;

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

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

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

  • 0
    Также убедитесь, что другие версии не установлены. Мне было трудно с этим. Я переформатировал компьютер и установил именно эту версию. Поскольку удаление нескольких версий VS заняло бы у меня столько же времени.
3

Самый простой способ решить это в 2016 году - установить Chocolatey, а затем пакет vcpython27. Open Powershell:

> iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
> choco install python2 -y
> choco install vcpython27 -y
3

Является ли Microsoft Visual С++ Compiler для Python 2.7 на http://www.microsoft.com/en-us/download/details.aspx?id=44266 не решением?

  • 0
    Работал на меня. Сообщение об ошибке в конце установки pip pysftp приводило к этой error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat). Get it from http://aka.ms/vcpython27
3

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

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

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

3

Я пробовал много решений, но только один работал у меня, установка Microsoft Visual Studio 2008 Express С++.

Я получил эту проблему с модулем Python 2.7, написанным на C (yEnc, который имеет другие проблемы с MS VS). Обратите внимание, что Python 2.7 построен с версией MS VS 2008, а не с 2010!

Несмотря на то, что он бесплатный, его довольно сложно найти, поскольку MS продвигает VS 2010. Тем не менее, официальные очень прямые ссылки MSDN все еще работают: проверьте https://stackoverflow.com/questions/15318560/visual-c-2008-express-download-link-dead ссылки для скачивания.

  • 0
    Да, лучший способ - установить VS2008.
2

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

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

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

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

  • 0
    Я получаю сообщение об ошибке при выполнении следующих шагов. LINK: ошибка LNK2001: неразрешенный внешний символ init__init__ build \ temp.win-amd64-2.7 \ Release_ init_ .lib : фатальная ошибка LNK1120: 1 неразрешенная внешняя ошибка: команда 'C: \\ Users \\ ma306477 \\ AppData \\ Local \\ Programs \\ Common \\ Microsoft \\ Visual C ++ для Python \\ 9.0 \\ VC \\ Bin \\ amd64 \\ link.exe 'завершился неудачно с состоянием выхода 1120
2

У меня такая же проблема, и я решил ее в данный момент.

"Google" сказал мне, что мне нужно установить "Microsoft Visual С++ Compiler for Python 2.7". Я устанавливаю не только инструмент, но и Visual С++ 2008 Reditributable, но это не помогло. Затем я попытался установить Visual С++ 2008 Express Edition. И проблема ушла!

Просто попробуйте установить Visual С++ 2008 Express Edition!

2

Я не знаю, слишком ли поздно, но я нашел Microsoft Visual С++ Compiler для Python 2.7, который читает

Типичное сообщение об ошибке, которое вы получите, если вам нужно, чтобы этот пакет компилятора был Не удалось найти vcvarsall.bat

Надеюсь, это поможет!

1

вызов import setuptools приведет к отключению патча обезьян для обеспечения совместимости с Visual Studio. Вызов vcvars32.bat вручную настроит виртуальную среду и предотвратит другие распространенные ошибки, которые компилятор будет бросать. Файл находится в

"C:\Program Files (x86)\Microsoft Visual Студия\2017\Community\VC\Auxiliary\Сложение\vcvars32.bat"

для VS 2017.

  • 0
    Действительно, импорт setuptools помогает, также в случае компиляции Cython .
1

Я пробовал все вышеперечисленные ответы, но не работал у меня. Я использовал Windows 10 и установил Visual Studio 2010 В моем случае нужно добавить vcvars64.bat в C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64

ниже: vcvars64.bat:

CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64

Установите Microsoft SDK 7.1, если вы не установите, и перезапустите pip install dulwich

1

Полный список версий MS VC++ и варианты установки официально поддерживаются distutils (и некоторые из них setuptools) и как использовать их можно найти в

https://wiki.python.org/moin/WindowsCompilers

Он также указывает, какая версия VС++ требуется для официального выпуска версии Win32 Python. Обратите внимание, что MinGW официально не поддерживается (подробнее см. ниже).

Вкратце:

  • Для каждой версии есть отдельная версия Visual Studio, которая работает "из коробки".
  • Для автономных SDK обычно требуется запустить установку из приглашения SDK (= установить переменные среды).
    • Для некоторых это требование может быть отменено одноразовой настройкой, которая не имеет побочных эффектов
  • Некоторые необычные версии VС++ поддерживаются setuptools, а не distutils.
  • MinGW называется "работать", но только для x86. https://bugs.python.org/issue4709 говорит, что проблемы с его поддержкой лежат в самой MinGW, а даже x86 имеет проблемы с Python 3.5.
1

Установите Visual Studio 2015 Community Edition из https://www.visualstudio.com, затем

для Python 3.4

set VS100COMNTOOLS=%VS140COMNTOOLS% && pip install XX

1

Перейдите сюда: http://docs.continuum.io/anaconda/install.html#windows-install

Есть инструкции по установке anaconda, который предоставит графический интерфейс и тихую установку большинства пакетов, которые, похоже, вызывают эту проблему из http://www.scipy.org/. Я знаю решение для 2.7 здесь https://www.microsoft.com/en-us/download/details.aspx?id=44266, но я не видел опции для Python 3.4. После загрузки и установки Anaconda вы сможете импортировать большинство пакетов, которые вам нужны, из scipy.

Надеюсь, это поможет некоторым людям. Принял мне 45 минут чистящих сообщений и сайтов.

EDIT: просто хочу отметить, что на странице GUI рядом с символами ОС есть ссылка Python34.

1

быстрое решение:

Если у вас python 3.4.x, решение просто установить VС++ 2010, поскольку он используется для компиляции.

https://www.visualstudio.com/en-us/downloads#d-2010-express

моя версия python MSC v.1600 32 бит (intel)] на win32

отлично работал на Windows8

1

У меня была та же ошибка (что я считаю глупым и не очень полезным вообще, как сообщения об ошибках) и продолжал испытывать проблемы, несмотря на наличие компилятора C.

Удивительно, что для меня работала просто модернизация pip и setuptools до самой последней версии. Надеюсь, это поможет кому-то другому.

1

Вы можете использовать easy_install вместо pip, который работает для меня.

  • 0
    Та же ошибка error: Setup script exited with error: Unable to find vcvarsall.bat
1

С Python 3.4 зависимость зависит от Visual Studio 2010. Установка Visual С++ 2010 Express исправила проблему для меня.

Обманывать его с помощью VS 2008 или 2013, которые, как мне оказалось, не работали.

1

Ответ, заданный @monkey, является одним из правильных, но он неполный.

Если вы хотите использовать MinGW, вы должны выбрать C, С++ и другие инструменты разработки, предлагаемые во время MinGW процесс установки также получить "make.exe".

Вы также должны установить путь в make.exe в env.

Чтобы выполнить свой ответ, выполните следующие действия:

  • Добавьте каталог bin mingw32 в переменные среды
  • Добавить C:\Programs\MinGW\bin;C:\Programs\MinGW\msys\1.0\bin; в PATH
  • Изменить (создать, если он не существует), файл distutils.cfg, расположенный в C:\Python26\Lib\distutils\distutils.cfg, будет:

    [build]
    compiler=mingw32
    

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

  • 0
    32-битные модули Python должны быть скомпилированы с 32-битным MINGW, в то время как 64-битные модули Python должны быть скомпилированы с 64-битным MINGW. На 64-битном Cygwin доступно 2 исполняемых файла mingw: x86_64-w64-mingw32-gcc и i686-w64-mingw32-gcc . Эти исполняемые файлы, очевидно, такие же, как те, которые вы обычно получаете от Mingw (просто скомпилированные в среде Cygwin).
1

Если вы пытаетесь установить pyodbc на ящик Windows, в котором не установлена ​​Visual Studio, другой вариант заключается в том, чтобы вручную установить pyobbc, используя двоичный дистрибутив.

Это особенно полезно, если у вас нет прав администратора на компьютере, с которым вы работаете, и пытаетесь настроить virtualenv.

Шаги:

  • Загрузите последнюю версию установщика Windows из здесь (pyodbc-X.X.X.win-Y-py2.7.exe)
  • Откройте исполняемый файл установщика с помощью 7-Zip (или WinRAR или что-то еще)
  • Извлеките pyodbc.pyd и pyodbc-X.X.X-py2.7.egg-info и поместите их в [python installation directory or virtualenv]\Lib\site-packages
  • Нет шага 4:)
0

Я нахожу намного более простой способ сделать это. Просто загрузите пакеты с веб-сайта: http://www.lfd.uci.edu/~gohlke/pythonlibs ' Например: autopy3-0.51.1-cp36-cp36m-win32.whl(cp36 означает Python 3.6) Загрузить И установите по месту установки файла для установки файла

0

http://www.stickpeople.com/projects/python/win-psycopg/

Установка соответствующего файла из указанной выше ссылки исправила мою проблему.

Упоминание: Джейсон Эриксон [[email protected]]. Он довольно хорошо управляет этой страницей для пользователей Windows.

0

У меня была такая же ошибка, когда я пытался установить pandas в Windows 10. После поиска нескольких решений я закончил использование колеса.

Прежде всего, обновите pip до самой новой версии:

easy_install install -U pip

Во-вторых, установите колесо:

pip install wheel

В-третьих, загрузите файл whl для своего пакета и установите его:

pip install [xxx].whl

Пока я считаю, что колесо - лучший способ установить пакеты Python на окна.

0

Я выполнил инструкции http://springflex.blogspot.ru/2014/02/how-to-fix-valueerror-when-trying-to.html. но ничего не произошло. Затем я установил 2010 Visual Studio Express (http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express) в соответствии с рекомендацией http://blog.python.org/2012/05/recent-windows-changes-in-python-33.html это помогло мне

-1

Лучший и исчерпывающий ответ на этот вопрос приведен здесь: https://blogs.msdn.microsoft.com/pythonengineering/2016/04/11/unable-to-find-vcvarsall-bat/

В большинстве случаев достаточно найти подходящий пакет.whl для требуемой зависимости python и установить его с помощью pip.

В последнем случае вам придется установить компилятор microsoft и установить пакет из исходного кода.

-2

Я не видел никакого ответа, используя vswhere, который, я думаю, является правильным способом сделать это с Visual Studio 15.2.

Вот как я запускаю vsvars64.bat (я думаю, это похоже на vsvarsall)

def init_vsvars():
    cprint("")
    cprint_header("Initializing vs vars")
    vswhere_path = r"%ProgramFiles(x86)%/Microsoft Visual Studio/Installer/vswhere.exe"
    vswhere_path = path.expandvars(vswhere_path)
    if not path.exists(vswhere_path):
        raise EnvironmentError("vswhere.exe not found at: %s", vswhere_path)

    vs_path = common.run_process(".", vswhere_path,
                                 ["-latest", "-property", "installationPath"])
    vs_path = vs_path.rstrip()

    vsvars_path = os.path.join(vs_path, "VC/Auxiliary/Build/vcvars64.bat")
    # common.run_process(".", vsvars_path, [])
    os.system('"%s"' % vsvars_path)

run_process делает кучу вещей, но в основном сводится к следующему:

    output = ""
    process = subprocess.Popen(
        commandline,
        stdout=subprocess.PIPE,
        stderr=subprocess.STDOUT,
        universal_newlines=True)
    for stdout_line in iter(process.stdout.readline, ""):
        cprint(stdout_line)
        output += stdout_line
    process.stdout.close()

    return_code = process.wait()
    return output

Ещё вопросы

Сообщество Overcoder
Наверх
Меню