Ошибка значения при попытке установить расширения Python для Windows
У меня уже установлена Microsoft Visual Studio 2008. Я скачал zip-файл Python для расширений Windows и извлек содержимое в мою папку Python27. Теперь есть подпапка с именем pywin32-214. (Является ли проблема 32-й частью? Я работаю в 64-битной системе.) Вот расшифровка стенограммы из командной строки:
C:\Python27\pywin32-214>setup.py -q install
Building pywin32 2.7.214.0
Traceback (most recent call last):
File "C:\Python27\pywin32-214\setup.py", line 2152, in <module>
('', ('pywin32.pth',)),
File "C:\Python27\lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\pywin32-214\setup.py", line 1251, in run
install.run(self)
File "C:\Python27\lib\distutils\command\install.py", line 563, in run
self.run_command('build')
File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\pywin32-214\setup.py", line 596, in run
build.run(self)
File "C:\Python27\lib\distutils\command\build.py", line 127, in run
self.run_command(cmd_name)
File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\distutils\command\build_ext.py", line 340, in run
self.build_extensions()
File "C:\Python27\pywin32-214\setup.py", line 858, in build_extensions
self.compiler.initialize()
File "C:\Python27\lib\distutils\msvc9compiler.py", line 383, in initialize
vc_env = query_vcvarsall(VERSION, plat_spec)
File "C:\Python27\lib\distutils\msvc9compiler.py", line 299, in query_vcvarsal
l
raise ValueError(str(list(result.keys())))
ValueError: [u'path']
Я не знаю, что с этим делать. Помогите?
7 ответов
Если у вас установлена 64-битная версия Python:
Установите "Microsoft Visual Studio 2008 Professional Edition" с включенной опцией "Компилятор и инструменты X64".
Или же загрузите pywin32-214.win-amd64-py2.7.exe с http://sourceforge.net/projects/pywin32/files/pywin32/Build%20214/
Другая возможная причина появления этой проблемы - то, что вы только что установили Visual Studio, а используемая вами командная строка зависала со времени до установки.
Это связано с тем, что установщик MSVC устанавливает несколько переменных среды, и для правильного выполнения vcvarsall.bat должна быть установлена одна из этих переменных ( VS90COMNTOOLS). Но каждая работающая программа в Windows имеет свою собственную локальную копию переменных среды, которая наследуется (копируется) из родительского процесса при запуске ребенка. Таким образом, после запуска ребенок не получает изменений, выполненных на уровне системы. И единственный способ получить обновленные переменные среды - это создать новый экземпляр дочернего процесса с родительским элементом, у которого есть обновленная версия envvars.
Как уже говорилось, он пытается использовать 32-битный компилятор для 64-битного Python. Мне удалось построить успешно:
- обнаружение
vcvarsx86_amd64.bat
вC:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64
(зависит от вашей настройки) - Откройте командную строку
- Бежать
SET VS90COMNTOOLS=%VS120COMNTOOLS%
(зависит от настройки, см. /questions/29351862/oshibka-ne-udaetsya-najti-vcvarsallbat/29351867#29351867) - Бежать
vcvarsx86_amd64.bat
- затем
pip install <package>
Ни один из этих ответов не работал для меня, но я нашел решение на трекере проблем:
- Открыть cmd.
- cd "C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ bin"
- Введите vcvars32.bat или vcvars64.bat
- В том же запросе и без закрытия: вернитесь к модулю Python, который вы пытаетесь установить.
- Код должен теперь установить.
Источник: http://bugs.python.org/issue7511
Если у вас установлен 64-битный Python 2.7 (как у меня) и вы слишком дешевы, чтобы купить VS2008 Professional, вы также можете скачать VS2008 Express и установить Windows 7 SDK, чтобы бесплатно получить совместимый 64-битный компилятор. После этого запустите сценарий Windows 7 SDK SetEnv.Cmd, а затем файл setup.py:
> "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd"
> setup.py -q install
SetEnv.Cmd должен установить все переменные среды, необходимые для сборки. При запуске должно появиться сообщение "Отладка Windows 7 x64". Вы также можете использовать эту команду для компиляции в режиме Release:
> "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /Release
> setup.py -q install
Расширения Python для Windows поддерживаются только на
32-битная MS Windows (95/98), 32-битная MS Windows (NT/2000/XP), все 32-битные MS Windows (95/98/NT/2000/XP), Win2K, WinXP, WinCE
Взято со страницы проекта sourceforge. Похоже, вам не повезло!
РЕДАКТИРОВАТЬ: Однако... чтение это, кажется, подразумевает иначе.
Я перепробовал все остальные ответы и многое другое. Закончилась установка Python 32-bit, которая сразу же исправила проблему.
Если это вариант, скорее всего, это самое простое решение.