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]
выдает такую же ошибку...
10 ответов
Вы могли бы использовать ол хорошо easy_install zipline
вместо.
easy_install
это не pip, но одним из его хороших аспектов является возможность загрузки и установки бинарных пакетов, что освободит вас от необходимости иметь готовый VC++. Это, конечно, основано на предположении, что двоичные файлы были подготовлены для вашей версии Python.
ОБНОВИТЬ:
Да, Pip может устанавливать двоичные файлы сейчас!
Существует новый двоичный формат архива Python ( колесо), который должен заменить "яйца". Колеса уже поддерживаются pip
, Это означает, что вы сможете установить zipline
с pip
без компиляции, как только кто-то создаст колесо для вашей платформы и загрузит его в PyPI.
Проблема здесь в строке 292 (здесь используется Python 3.4.3) в $python_install_prefix/Lib/distutils/msvc9compiler.py
который говорит:
VERSION = get_build_version()
Это проверяет только версию MSVC, с которой был собран ваш питон. Просто замените эту строку вашей актуальной версией 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 C++ для Python 2.7, который можно использовать без установки всего VS 2008.
Если вы получаете эту ошибку на Python 2.7, теперь вы можете получить компилятор Microsoft Visual C++ для Python 2.7 в качестве отдельной загрузки.
Если вы используете версию 3.3 или более позднюю, вам нужно установить Visual Studio 2010 Express, которая доступна бесплатно здесь: https://www.visualstudio.com/downloads/download-visual-studio-vs
Если у вас версия 3.3 или выше, и вы используете 64-битную версию python, вам необходимо установить Microsoft SDK 7.1, который поставляется с 64-битным компилятором, и следовать приведенным здесь инструкциям. Python PIP имеет проблемы с путем для MS Visual Studio 2010 Express для 64-битной установки. в Windows 7
Во-первых, вы должны найти файл vcvarsall.bat в вашей системе.
Если он не существует, я рекомендую вам установить Microsoft Visual C++ Compiler для Python 2.7. Это создаст vcvarsall.bat в "C:\Program Files (x86)\Common Files\Microsoft\Visual C++ для Python\9.0", если вы установите его для всех пользователей.
Проблема теперь в функции find_vcvarsall(version) в модуле C:/Python27/Lib/distutils/msvc9compiler.py, который ищет файл vcvarsall.bat.
После вызова функции вы увидите, что она ищет в реестре запись, содержащую путь к файлу vcvarsall.bat. Он никогда не найдет его, потому что эта функция ищет в других каталогах, отличных от того, где ее установила вышеупомянутая установка, и в моем случае реестра не существует.
Самый простой способ решить эту проблему - вручную вернуть путь к файлу vcvarsall.bat. Для этого измените функцию find_vcvarsall(version) в файле 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(version).
Просто потому, что на вашем компьютере не установлен компилятор C++, проверьте следующее
Загрузите Microsoft Visual C++ 2008 с этой страницы. В любом случае, это вообще полезная страница, поэтому вам, вероятно, стоит добавить ее в закладки. Для Python 3.3+ используйте MS Visual C++ 2010. Установите это.
Откройте проводник Windows (файловый браузер) и найдите местоположение файла 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-битная), как описано здесь,
Подсказка: 0.9 в каталоге register является текущей установленной версией вашей Visual Studio. Если вы используете VS 2013, вы должны найти путь HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VisualStudio\12.0....
В ключе запуска Windows введите cmd, чтобы получить командную оболочку. Если вам нужно, перейдите в свою виртуальную среду и запустите activ.bat.
pip install или что вы используете для его установки.
Вы должны иметь каталог bin Visual Studio на своем пути. Pip install пытается скомпилировать некоторый C-код.
Я провел часы, исследуя этот vcvarsall.bat. Большинство ответов на SO сосредоточены на Python 2.7 и / или создании обходных путей путем изменения системных путей. Никто не работал для меня. Это решение было разработано для Python 3.5 и (я думаю) является "правильным" способом сделать это.
Посмотрите эту ссылку - она описывает компиляторы Windows для использования в различных версиях Python: https://wiki.python.org/moin/WindowsCompilers#Microsoft_Visual_C.2B-.2B-_14.0_standalone:_Visual_C.2B-.2B- _Build_Tools_2015_.28x86.2C_x64.2C_ARM.29
Для Python 3.5 загрузите это: https://www.microsoft.com/en-us/download/details.aspx?id=49983
Для меня мне пришлось запустить C:\Program Files (x86)\Microsoft Visual C++ Инструменты сборки \Visual C++ x64 Native Build Tools Командная строка для его работы. Из этой командной строки я запустил "pip install django_compressor", который был конкретным пакетом, который вызывал у меня проблему, и он работал отлично.
Надеюсь, это сэкономит кому-то время!
Я понимаю, что это может не быть решением проблемы с 3.4, но я пытался решить множество проблем, чтобы исправить это на 3.4, и подумал, что это может быть полезно, если у кого-то не хватает времени или нет ноу-хау, как это исправить (в мой случай, работа требует).
С точно такой же настройкой я обнаружил, что мои проблемы с установкой произошли только с Python 3.4. Когда я перешел на 2.7, все мои проблемы, казалось, были решены.
У нас довольно чрезмерная настройка безопасности, поэтому я собираюсь попробовать то же самое на моей домашней версии (все еще 3.4) и посмотреть, получу ли я еще больше радости. Я склоняюсь к тому, что моя версия VS каким-то образом была ограничена, и ответы выше должны помочь. Если я найду что-нибудь еще сегодня вечером, я добавлю дополнительные детали.
Это мой первый ответ, не самый технический, я боюсь!
Если вы пытаетесь установить 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
Сценарий сборки автоматически определит версию Python и 32/64 бита.
Спасибо "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"
и это должно работать