Установка SetupTools в 64-битной Windows - PullRequest
133 голосов
/ 06 сентября 2010

Я использую 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. Я что-то пропустил или мне нужно установить это из источника?

Ответы [ 11 ]

142 голосов
/ 06 сентября 2010

Проблема: у вас есть 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.

91 голосов
/ 06 сентября 2010

Очевидно (столкнувшись со связанными 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-битные библиотеки .

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

69 голосов
/ 03 февраля 2012

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

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

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

28 голосов
/ 09 октября 2012

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

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

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

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

9 голосов
/ 26 января 2013

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

'python register.py'

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

9 голосов
/ 26 октября 2012

Создайте файл с именем 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"

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

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

3 голосов
/ 15 июля 2011

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

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

1 голос
/ 27 октября 2014

Я попробовал описанное выше, и добавление разделов реестра в 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 \ DLL,; C: \ python27 \ Lib \ Lib-тк"

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

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

1 голос
/ 29 февраля 2012

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

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

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

0 голосов
/ 14 августа 2015

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

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

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

...