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 каким-то образом была ограничена, и ответы выше должны помочь. Если я найду что-нибудь еще сегодня вечером, я добавлю дополнительные подробности.
Это мой первый ответ, а не самый технический, которого я боюсь!