PIPON PIP имеет проблемы с путём для MS Visual Studio 2010 Express для 64-разрядной установки на Windows 7

Я создавал virtualenv с чистой установкой python 3.3, 64-разрядной версии. (Примечание. У меня есть несколько установок python на моем компьютере, включая WinPython, но вы хотите настроить чистые и маленькие virtualenvs для нескольких проектов, над которыми я работаю. Версия WinPython работает нормально.) Когда я использовал pip для установки пакетов, У меня появилось сообщение об ошибке (может быть указано, если запрос запрошен). В конечном итоге последними строками сообщения об ошибке были:

File "c:\python33-b\Lib\distutils\msvc9compiler.py", line 287, in query_vcvarsall raise ValueError(str(list(result.keys())))

ValueError: ['path']

Я исследовал результаты функции query_vcvarsall в файле msvc9compiler.py. Я узнал, что эта функция ищет путь vcvarsall от MS Visual Studio 10 Express на моем компьютере. Он ищет 4 компонента: INCLUDE =, PATH =, LIB = и LIBPATH =. Они были специфичны для MS VS 2010. Моя установка отправила аргумент "amd64" для этой функции. Он не нашел ничего, кроме инструкции PATH =, но нашел файл vcvarsall.bat. Когда я обманул эту функцию, чтобы использовать аргумент "x86", он нашел все 4 оператора и появился, как будто он будет работать нормально.

Я потратил некоторое время на изучение этого в Интернете. Я обнаружил, что MS VS Express 2010 устанавливается по умолчанию как 32-разрядный. Нужно настроить его на 64-разрядный (это означает, что он будет устанавливать операторы, необходимые выше). По-видимому, была ошибка, и 64-разрядные инструменты не были установлены с этой версией. Поэтому я установил MS SDK для установки 64-битных инструментов. Затем я обнаружил, что было исправлено это и установлено это (перечисленное ниже в ссылках).

Было создано несколько методов для создания путей для 64-битного VS. Один из них состоял в том, чтобы запустить vcvarsall amd64 в командной строке для MS VS. В результате появилось сообщение о том, что инструменты не были установлены на моем компьютере. Эти инструменты должны были находиться в каталоге C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64. Файл, который, по-видимому, ищет, это vcvars64.bat(или что-то подобное). У меня есть каталог, но не пакетный файл. (Была рекомендация использовать метод x86_amd64, но он имеет все те же проблемы.)

Вторая рекомендация заключалась в том, чтобы запустить setenv /x64 из командной строки SDK. Я побежал, и это казалось правильным. Тем не менее, когда я пошел, я попытался установить пакеты через pip, я получил то же сообщение об ошибке.

В конечном счете, мой вопрос заключается в том, как добиться бесперебойной работы pip. Просто чтобы упомянуть, да, я перезагрузился, прежде чем тестировал пип после каждой установки и попытался исправить это.

Вот некоторые сайты, которые помогли мне зайти так далеко:

1) Запуск 64-битной командной строки из Visual Studio 2010

2) Настройка переменных пути и среды для MS VS 2010: создание командной строки:
http://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx

3) VS2010 Express и отсутствующий компилятор x64:
https://social.msdn.microsoft.com/Forums/en-US/e0ef4613-d90f-4eec-90db-41339ed31367/vs2010-express-and-missing-x64-compiler?forum=Vsexpressinstall

4) ИСПРАВЛЕНИЕ: компиляторы Visual С++ удаляются при обновлении Visual Studio 2010 Professional или Visual Studio 2010 Express до Visual Studio 2010 с пакетом обновления 1 (SP1), если установлен Windows SDK v7.1:
http://support.microsoft.com/kb/2519277

5) msvc9compiler.py: ValueError при попытке скомпилировать с помощью VC Express: http://bugs.python.org/issue7511

Ответы

Ответ 1

В конечном итоге мне удалось запустить pip. В двух словах (и избыточности из приведенной выше информации) вот что я сделал для инсталляции 64-битных пакетов для python 3.3:

1) Установлен Microsoft Visual С++ 2010 Express Загрузить здесь (http://www.visualstudio.com/downloads/download-visual-studio-vs)забастовкa >

2) Установлен Microsoft SDK 7.1 (Windows 7) (http://www.microsoft.com/en-us/download/details.aspx?id=8279)

3) Встроенный/активированный 64-битный инструмент в SDK. Перейдите в меню "Пуск" и в папке Microsoft Windows SDK v7.1 выберите "Командная строка Windows SDK 7.1". Появится оболочка. Введите следующую команду setenv /x64.

4) Я установил исправление (не знаю, было ли это в конечном счете необходимо.) (http://support.microsoft.com/kb/2519277)

5) Создал новый файл vcvars64.bat в папке C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64. Внутри этого нового командного файла я включил только строку CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64. Я предполагаю, что это делает, это заставить distutils использовать компилятор С++ из SDK. После этого конвейер установлен правильно. Насколько я понимаю, компилятор С++ должен быть таким же, как и для компиляции python 3.3. Из моих исследований кажется, что SDK как установленный тот же самый компилятор, но просто не требует наличия исходного файла vcvars64.bat. Эта информация взята из: http://www.w7forums.com/threads/vcvarsall-bat-no-64bit-support-vcvars64-bat-missing.6606/. Пожалуйста, поправьте меня, если я создаю проблемы в будущем с этим решением. Спасибо.

Ответ 2

Для меня было достаточно выполнить шаги 1, 2 и 5, шаг 4 не требовался:

1) Установите Microsoft Visual С++ 2010 (в моем случае не Express)

2) Установите Microsoft SDK 7.1 (Windows 7)

Пропустить 3 и 4.

5) Создать C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat, содержащий строку  CALL "C:\Program Files\Microsoft SDK\Windows\v7.1\Bin\SetEnv.cmd" /x 64

Готово: работает установка numppp3.

Ответ 3

Пятый шаг не сработал у меня (я использую VС++ 10 Express). Я, наконец, получил команду pip, выполнив команду install install в командной строке SDK после ввода setenv/x64 (запуск pip в обычном запросе cmd.exe не работал).

Ответ 4

Вот что я сделал, чтобы установить 64-разрядные пакеты для python 3.4.4 на процессоре на основе Windows 10 x64 и x64:

0) Используйте precompiled amd64 whl для всего возможного и следующий метод для чего-либо, что забрасывало ошибки

1a) Установленный Microsoft Visual С++ 2010 Express

1b) Удаленный Microsoft Visual С++ 2010 Express, распространяемый через панель управления

2) Установлен Microsoft SDK 7.1 (Windows 10)

3) Я установил исправление (http://support.microsoft.com/kb/2519277)

4) Создал новый файл vcvars64.bat в папке C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64, включая только строку

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

5) Запуск установки pip в командной строке SDK после ввода

setenv /x64

и

set DISTUTILS_USE_SDK=1