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 и (я думаю) является "правильным" способом сделать это.

  1. Посмотрите эту ссылку - она ​​описывает компиляторы 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

  2. Для Python 3.5 загрузите это: https://www.microsoft.com/en-us/download/details.aspx?id=49983

  3. Для меня мне пришлось запустить 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"

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

Другие вопросы по тегам