Установка SetupTools в 64-битной Windows

133

Я использую Python 2.7 в 64-битной Windows 7, и когда я запускаю установщик для setuptools, он говорит мне, что Python 2.7 не установлен. Конкретное сообщение об ошибке:

`Python Version 2.7 required which was not found in the registry`

Моя установленная версия Python:

`Python 2.7 (r27:82525, Jul  4 2010, 07:43:08) [MSC v.1500 64 bit (AMD64)] on win32`

Я смотрю на сайт setuptools, и он не упоминает никаких установщиков для 64-битной Windows. Я что-то пропустил или мне нужно установить это из источника?

quanticle
источник
7
Примечание для читателей: прокрутите вниз, принятый ответ не самый лучший.
К сожалению, 64-битный установщик SetupTools не существовал, когда я опубликовал свой вопрос, поэтому я принял обходной путь, прекрасно зная, что это взлом.
количество
2
@JohnRobertson, каков лучший ответ тогда?
РРП

Ответы:

91

Очевидно (столкнувшись со связанными 64- и 32-битными проблемами в OS X), есть ошибка в установщике Windows . Я наткнулся на этот обходной путь , который может помочь - в основном, вы создаете свой собственный параметр реестра HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.6\InstallPathи копируете значение из InstallPath из HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath. Смотрите ответ ниже для более подробной информации.

Если вы сделаете это, будьте осторожны, что setuptools может устанавливать только 32-битные библиотеки .

ПРИМЕЧАНИЕ: ответы ниже предлагают более подробную информацию, поэтому, пожалуйста, прочитайте их тоже.

Дейв Эверитт
источник
1
Работает также с установкой PIL (PIL-1.1.7.win32-py2.7).
Панни
142

Проблема: у вас есть 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, поскольку он содержит двоичные файлы. Но на http://www.lfd.uci.edu/~gohlke/pythonlibs/ есть 64-битный установщик (также есть много установщиков для других модулей) . В настоящее время многие пакеты в PyPi имеют бинарные дистрибутивы, поэтому вы можете установить их через pip.

leoluk
источник
7
Отличная ссылка для неофициальных инсталляторов!
Андрей Дроздюк
Спасибо. Решил мою проблему для Python 2.7 с amd64.
NMAT
2
То же самое можно сказать и об обратном (2.7 32 и setuptools 64) stackoverflow.com/a/10966396/404385 <- чтобы узнать, какой у вас установлен Python
версии
1
Эта ссылка чистого золота!
Пол Бекотт
1
Для тех, кто не знает, как установить whl-файл, вы устанавливаете их с помощью pip, напримерpip install xyz.whl
arun
69

Я сделал файл реестра (.reg), который автоматически изменит реестр для вас. Он работает, если он установлен в "C: \ Python27":

Скачать 32-битную версию HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\wow6432node\

Скачать 64-битную версию HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\

Джо Д.Ф.
источник
3
Ваш файл REG работал для меня, но у меня возникла противоположная проблема, поэтому мне пришлось удалить "\ Wow6432Node" из всех имен ключей.
pwhe23
Я думаю, я мог бы опубликовать ссылку для 32bit ..: P
Джо Д.Ф.
Потрясающие файлы патчей! Большой! Спасибо вам за это!!
Бенни Нойгебауэр
@BennyNeugebauer Нет проблем.
Джо Д.Ф.
@EvanCaldwell Нет проблем!
Джо Д.Ф.
28

Да, вы правы, проблема в 64-битном Python и 32-битном инсталляторе для setuptools.

Лучший способ установить 64-битные установочные инструменты в Windows - это загрузить ez_setup.py в C: \ Python27 \ Scripts и запустить его. Он загрузит соответствующий 64-битный файл .egg для setuptools и установит его для вас.

Источник: http://pypi.python.org/pypi/setuptools

PS Я бы рекомендовал не использовать сторонние 64-битные установщики .exe установщиков или манипулировать реестром

arainchi
источник
2
не могу поверить, насколько быстрым и легким было это решение. Я часами застрял на других проспектах.
Бретт
1
Лучшее и самое безопасное решение на мой взгляд!
djfranzwa
9

Создайте файл с именем python2.7.reg(файл реестра) и поместите в него этот контент:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7]

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\Help]

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\Help\MainPythonDocumentation]
@="C:\\Python27\\Doc\\python26.chm"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath]
@="C:\\Python27\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath\InstallGroup]
@="Python 2.7"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\Modules]

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\PythonPath]
@="C:\\Python27\\Lib;C:\\Python27\\DLLs;C:\\Python27\\Lib\\lib-tk"

И убедитесь, что каждый путь правильный!

Затем запустите (объедините) и сделайте :)

MichaelvdNet
источник
Спасибо! Я могу подтвердить, что это работает для Python 2.76 и настройки H5PY. Может быть, просто обновите путь к документу для python276.chm для хорошего порядка :)
mork
9

Получить файл register.pyиз этой сути . Сохраните его на диске C или D, перейдите в CMD, чтобы запустить его с:

'python register.py'

Тогда вы сможете установить его.

nickleefly
источник
Это самое простое решение. Спасибо! Я столкнулся с этой проблемой при попытке установить wxPython2.8-win32-юникод-2.8.12.1-PY27 и ВСЕГДА жалуется питон не зарегистрирован
Robert1968
3

Для 64-битного Python в Windows загрузите ez_setup.py и запустите его; он загрузит соответствующий файл .egg и установит его для вас.

На момент написания статьи установщик .exe не поддерживал 64-разрядные версии Python для Windows из-за проблемы совместимости установщика distutils .

Constantin
источник
этот действительно работал для меня! другой сценарий Джо Д.Ф. у меня не сработал
слова для этого
1

Чтобы установщики Windows могли найти установленный каталог Python в Windows 7 , ИЛИ измените, в какую установку Python следует установить установщик, добавьте установленный путь в значение раздела реестра InstallPath (по умолчанию) :

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Python \ PythonCore \ 2.X \ InstallPath

Где « X » - версия Python (то есть 2.5, 2.6 или 2.7).

monkut
источник
1

Я попробовал вышеупомянутое, и добавление ключей реестра в LOCALMACHINE не выполняло работу. Так что, если вы все еще застряли, попробуйте это.

Редактор реестра Windows, версия 5.00

[HKEY_CURRENT_USER \ SOFTWARE \ Python]

[HKEY_CURRENT_USER \ SOFTWARE \ Python \ PythonCore]

[HKEY_CURRENT_USER \ SOFTWARE \ Python \ PythonCore \ 2,7]

[HKEY_CURRENT_USER \ SOFTWARE \ Python \ PythonCore \ 2,7 \ Help]

[HKEY_CURRENT_USER \ SOFTWARE \ Python \ PythonCore \ 2.7 \ Help \ Основная документация по Python] @ = "C: \ Python27 \ Doc \ python272.chm"

[HKEY_CURRENT_USER \ SOFTWARE \ Python \ PythonCore \ 2.7 \ InstallPath] @ = "C: \ Python27 \"

[HKEY_CURRENT_USER \ SOFTWARE \ Python \ PythonCore \ 2.7 \ InstallPath \ InstallGroup] @ = "Python 2.7"

[HKEY_CURRENT_USER \ SOFTWARE \ Python \ PythonCore \ 2,7 \ Modules]

[HKEY_CURRENT_USER \ SOFTWARE \ Python \ PythonCore \ 2.7 \ PythonPath] @ = "C: \ Python27 \ Lib; C: \ Python27 \ DLLs; C: \ Python27 \ Lib \ lib-tk"

Скопируйте и вставьте выше в блокноте и сохраните его как Python27.reg. Теперь запустите / объедините файл, как указано в ответах выше. (Убедитесь, что пути установки Python исправлены в соответствии с вашей установкой.

Это просто делает то, что вышеупомянутые ответы предлагают для локальной машины, текущему пользователю.

Шасват Рунгта
источник
0

Вот ссылка на другой пост / тему. Я смог запустить этот скрипт для автоматизации регистрации Python 2.7. (Обязательно запустите его с Python 2.x, который .exeвы хотите зарегистрировать!)

Чтобы зарегистрировать Python 3.x, мне пришлось изменить printсинтаксис и импортировать winreg(вместо _winreg), а затем запустить Python 3 .exe.

https://stackoverflow.com/a/29633714/3568893

robertberrington
источник