Я создавал 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