Проблема: у вас есть 64-битный Python и 32-битный установщик.Это вызовет проблемы для модулей расширения.
Причинами, по которым установщик не находит Python, является прозрачная 32-разрядная эмуляция из Windows 7. 64-разрядные и 32-разрядные программы будут записывать данные в различные части реестра Windows.
64-бит: HKLM|HKCU\SOFTWARE\
32-бит: HKLM|HKCU\SOFTWARE\wow6432node\
.
Это означает, что 64-битный установщик Python пишет в HKLM\SOFTWARE\Python
, но 32-битный установщик setuptoolsсмотрит на HKLM\SOFTWARE\wow6432node\Python
(это обрабатывается окнами автоматически, программы не замечают).Это ожидаемое поведение, а не ошибка.
Обычно у вас есть следующие варианты:
- «чистый» способ: используйте 32-битный Python, если вам нужно использовать 32-битныймодули или расширения
- другим «чистым» способом: используйте только 64-битные установщики при использовании 64-битного Python (см. ниже)
- , что предлагает ответ выше: скопируйте
HKLM\SOFTWARE\Python
в HKLM\SOFTWARE\wow6432node\Python
, но это будет вызывать проблемы с двоичными дистрибутивами, так как 64-битный Python не может загружать 32-битные скомпилированные модули (НЕ делайте этого!) - устанавливать чистые модули Python сsetuptools вместо установщика distutils (easy_install или pip)
Например, для самого setuptools нельзя использовать 32-разрядный установщик для 64-разрядного Python, поскольку он содержит двоичные файлы. Но есть 64-битный установщик на http://www.lfd.uci.edu/~gohlke/pythonlibs/ (также есть много установщиков для других модулей) .В настоящее время многие пакеты в PyPi имеют бинарные дистрибутивы, поэтому вы можете установить их через pip.