Ошибка значения, пытающаяся установить расширения 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']

Я не знаю, что с этим делать. Помощь?

Ответ 1

Если у вас установлена ​​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/

Ответ 2

Еще одна возможная причина появления этой проблемы заключается в том, что вы только что установили Visual Studio, и приглашение командной строки, которое вы используете, зависало с момента до установки.

Это связано с тем, что установщик MSVC устанавливает несколько переменных среды, и одна из этих переменных (VS90COMNTOOLS) должна быть установлена ​​для правильной работы vcvarsall.bat. Но каждая работающая программа в Windows содержит собственную локальную копию переменных окружения, которая наследуется (копируется) из родительского процесса при запуске ребенка. Таким образом, после того, как ребенок запустился, он не получает изменений, выполненных на envvars на системном уровне. И единственный способ получить обновленные переменные среды - это зарождение нового экземпляра дочернего процесса с родителем с обновленной версией envvars.

Ответ 3

Как указано, он пытается использовать 32-разрядный компилятор для 64-битного питона. Я смог успешно построить:

  • Поиск vcvarsx86_amd64.bat в C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64 (зависит от вашей настройки)
  • Откройте приглашение cmd
  • Запустите SET VS90COMNTOOLS=%VS120COMNTOOLS% (зависит от настройки, см. fooobar.com/questions/2058/...)
  • Выполнить vcvarsx86_amd64.bat
  • Затем pip install <package>

Ответ 4

Ни один из этих ответов не работал у меня, но я нашел решение для трекера проблем:

  • Открыть cmd.
  • cd "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin"
  • Введите vcvars32.bat или vcvars64.bat
  • В том же приглашении и - без закрытия: cd обратно к модулю Python, который вы пытаетесь установить.
  • Теперь код должен быть установлен.

Источник: http://bugs.python.org/issue7511

Ответ 5

Если вы исправлены на 64-битной версии Python 2.7 (например, я) и слишком дешевы, чтобы купить VS2008 Professional, вы также можете скачать VS2008 Express и установить Windows 7 SDK, чтобы бесплатно получить совместимый 64-разрядный компилятор. После этого запустите Windows 7 SDK SetEnv.Cmd script, а затем setup.py:

> "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd"
> setup.py -q install

SetEnv.Cmd должен настроить все переменные среды, необходимые для сборки. Когда он запускается, должно появиться сообщение с надписью "Ориентация Windows 7 x64 Debug". Вы также можете использовать эту команду для компиляции в режиме Release:

> "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /Release
> setup.py -q install

Ответ 6

Расширения 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. Похоже, вам может быть не повезло!

EDIT: Однако... чтение this, похоже, подразумевает иное.

Ответ 7

Я попробовал все остальные ответы и многое другое. Завершена установка 32-разрядной версии python, которая сразу устраняет проблему.

Если это опция, это, скорее всего, самое простое исправление.