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

Использование pip install zipline в Windows 8 с Python 2.7 дает мне ошибку:

Downloading/unpacking six (from python-dateutil==2.1->delorean->zipline[all])
  Running setup.py egg_info for package six

Installing collected packages: blist, pytz, requests, python-dateutil, six
  Running setup.py install for blist
    building '_blist' extension
    error: Unable to find vcvarsall.bat
    Complete output from command C:\Python27\python.exe -c "import setuptools;__
file__='c:\\users\\ThatsMe\\appdata\\local\\temp\\pip-build-ThatsMe\\blist\\setup.py';ex
ec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" inst
all --record c:\users\ThatsMe\appdata\local\temp\pip-xvoky2-record\install-record.tx
t --single-version-externally-managed:

running install

running build

running build_py

running build_ext

building '_blist' extension

error: Unable to find vcvarsall.bat

Вопрос: Как можно устранить ошибку? Выполнение pip install zipline[all] дает ту же ошибку...

Ответы

Ответ 1

Вместо этого вы можете использовать ol 'good easy_install zipline.

easy_install не является пипсом, но одним из его достоинств является возможность загрузки и установки бинарных пакетов, что освободит вас от необходимости готовить VС++. Это, конечно, полагается на предположение, что двоичные файлы были подготовлены для вашей версии Python.

UPDATE:

Да, Pip теперь может устанавливать бинарные файлы!

Появится новый двоичный формат архива Python (wheel), который должен заменить "яйца". Колеса уже поддерживаются pip. Это означает, что вы сможете установить zipline с помощью pip без компиляции, как только кто-то построит колесо для вашей платформы и загрузит его в PyPI.

Ответ 2

Здесь проблема заключается в строке 292 (здесь используется Python 3.4.3) в $python_install_prefix/Lib/distutils/msvc9compiler.py, которая гласит:

VERSION = get_build_version()

Это проверяет только версию MSVC, с которой был построен ваш python. Просто замените эту строку вашей реальной версией Visual Studio, например. 12.0 для MSVC2013

VERSION = 12.0

устранит проблему.

ОБНОВЛЕНИЕ: Оказывается, что есть хорошая причина, почему эта версия жестко запрограммирована. Время выполнения MSVC C не требуется для совместимости между основными версиями. Следовательно, когда вы используете другую версию VS, вы можете столкнуться с проблемами времени выполнения. Поэтому я рекомендую использовать VS 2008 (для Python 2.6 до 3.2) и VS2010 для (Python 3.3 и более поздних), пока эта проблема не будет устранена.

Двоичная совместимость поступит с VS 2015 (см. здесь) вместе с Python 3.5.

Для пользователей Python 2.7 Microsoft выпустила специальный компилятор Microsoft Visual С++ для Python 2.7, который можно использовать без установки всего VS 2008.

Ответ 3

Если вы получаете эту ошибку на Python 2.7, вы можете теперь получить Microsoft Visual С++ Compiler for Python 2.7 как самостоятельную загрузку.

Если вам нужно 3.3 или более поздней версии, вам необходимо установить Visual Studio 2010 express, который доступен бесплатно: https://www.visualstudio.com/downloads/download-visual-studio-vs#d-2010-express p >

Если вам 3.3 или более поздней версии и с использованием 64-разрядной версии python вам необходимо установить Microsoft SDK 7.1, который отправляет 64-битный компилятор и следуйте указаниям здесь Python PIP имеет проблемы с путём для MS Visual Studio 2010 Express для 64-разрядной установки в Windows 7

Ответ 4

Сначала вы должны искать файл vcvarsall.bat в своей системе.

Если этого не существует, я рекомендую установить Microsoft Visual С++ Compiler для Python 2.7. Это создаст vcvarsall.bat в "C:\Program Files (x86)\Common Files\Microsoft\Visual С++ для Python\9.0", если вы установите его для всех пользователей.

Теперь проблема заключается в функции find_vcvarsall (version) в модуле C:/Python27/Lib/distutils/msvc9compiler.py, который ищет vcvarsall.bat.

После вызовов функций вы увидите, что он ищет запись в реестре, содержащую путь к файлу vcvarsall.bat. Он никогда не найдет его, потому что эта функция просматривается в других каталогах, отличных от того, где размещена указанная выше установка, и в моем случае реестра не было.

Самый простой способ решить эту проблему - вручную вернуть путь к файлу vcvarsall.bat. Чтобы сделать это, измените функцию find_vcvarsall (версия) в файле msvc9compiler.py с абсолютным путем к файлу vcvarsall.bat следующим образом:

def find_vcvarsall(version):
    return r"C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat"

Это решение сработало для меня.

Если у вас уже есть файл vcvarsall.bat, вы должны проверить, есть ли в реестре ключ productdir:

(HKEY_USERS, HKEY_CURRENT_USERS, HKEY_LOCAL_MACHINE или HKEY_CLASSES_ROOT)\Software\Wow6432Node\Microsoft\VisualStudio\version\Setup\VC

Где версия = msvc9compiler.get_build_version()

Если у вас нет ключа, просто выполните:

def find_vcvarsall(version):
        return <path>\vcvarsall.bat

Чтобы понять точное поведение, проверьте msvc9compiler.py модуль, начиная с функции find_vcvarsall (версия).

Ответ 5

Просто потому, что на вашем компьютере не установлен компилятор С++, проверьте следующее

  • Загрузите Microsoft Visual С++ 2008 с этой страницы . Это вообще полезная страница в любом случае, поэтому вы должны, вероятно, добавить ее в закладки. Для Python 3.3+ используйте MS Visual С++ 2010. Установите его.

  • Откройте Windows explorer (браузер файлов) и найдите местоположение "vcvarsall.bat" и вырежьте его в буфер обмена.

  • запустить regedit из ключа запуска Windows. Вам понадобятся административные привилегии.

  • Добавить запись в реестр HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC\ProductDir (64-разрядная версия Windows) или HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Setup\VC\ProductDir (32 бит) как описано здесь.

Hint: 0.9 в каталоге registery - это установленная версия вашей визуальной студии, если вы используете VS 2013, вам нужно найти путь HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\12.0....

  • В стартовом ключе Windows введите cmd, чтобы получить командную оболочку. Если вам нужно, перейдите в свою виртуальную среду и запустите activate.bat.

  • pip install или все, что вы используете для его установки.

Ответ 6

У вас должен быть каталог bin в Visual Studio. Pip install пытается скомпилировать некоторый C-код.

Ответ 7

Я потратил несколько часов на изучение этого vcvarsall.bat. Большинство ответов на SO сосредоточены на Python 2.7 и/или создают обходные пути путем изменения системных путей. Никто не работал у меня. Это решение разработано в ящике для Python 3.5 и (я думаю) - это "правильный" способ сделать это.

Надеюсь, что это кому-то поможет!

Ответ 8

Благодаря "msoliman" за его намек, однако его ответ не дает четкого решения для тех, у кого нет VS2010
Например, у меня есть VS2012 и VS2013, и таких ключей в системном реестре нет.

Решение:
Изменить файл: " [Python_install_loc]/Lib/distutils/msvc9compiler.py"
Изменить строку 224:

productdir = Reg.get_value(r"%s\Setup\VC" % vsbase,
                               "productdir")

в

productdir = "C:\Program Files (x86)\Microsoft Visual Studio [your_vs_version(11/12...)]\VC"

и это должно работать

Ответ 9

Если вы пытаетесь установить matplotlib для работы с графиками на python. Попробуйте эту ссылку. https://github.com/jbmohler/matplotlib-winbuild. Это набор скриптов для создания matplotlib из источника на платформе MS Windows.

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

git clone https://github.com/matplotlib/matplotlib
git clone https://github.com/jbmohler/matplotlib-winbuild
$ python matplotlib-winbuild\buildall.py

Конструкция script автоматически определит версию Python и 32/64 бит.

Ответ 10

Я ценю, что это может быть не ответ на решение по 3.4, но я пробовал огромное количество вещей, чтобы исправить это на 3.4 и подумал, что это может быть полезно, если кто-то нажимает время или не имеет ноу-хау, чтобы исправить он (в моем случае, требует работы).

С точно такой же установкой я обнаружил, что мои проблемы с установкой произошли только с Python 3.4. Когда я перешел на 2.7, все мои проблемы, похоже, были решены.

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

Это мой первый ответ, а не самый технический, которого я боюсь!