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