Встановлення 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. Я щось пропустив чи мені потрібно встановити це з джерела?


7
Примітка для читачів: Прокрутіть униз, прийнята відповідь не найкраща.

На жаль, 64-розрядний інсталятор SetupTools не існував, коли я розміщував своє запитання, тож я прийняв рішення, знаючи, що це хак.
кількість

2
@JohnRobertson, що найкраща відповідь?
rrs

Відповіді:


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-бітний інсталятор налаштування дивитьсяHKLM\SOFTWARE\wow6432node\Python це (це обробляється Windows автоматично, програми не помічають). Це очікувана поведінка, а не помилка.

Зазвичай у вас є такі варіанти:

  • "чистий" спосіб: використовуйте 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.


7
Відмінне посилання для неофіційних монтажників!
Андрій Дроздюк

Дякую. Вирішив мою проблему для Python 2.7 з amd64.
nmat

2
Те ж саме відноситься і навпаки (2,7 32 і Setuptools 64) stackoverflow.com/a/10966396/404385 <- щоб дізнатися, що ваш встановлений Python версії і 32/64
Cu7l4ss

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
Joe DF

Дивовижні патч-файли! Чудово! Дякую тобі за це!!
Бенні Нойгебауер

@BennyNeugebauer Немає проблем.
Joe DF

@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 setuptools або встановлювати реєстр


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"

І переконайтесь, що кожен шлях правильний!

Потім запустіть (об'єднайте) його і зробіть :)


Дякую! Я можу підтвердити, що він працює для налаштування python 2.76 та h5py. Можливо, просто оновіть док-шлях до python276.chm для гарного замовлення :)
mork

9

Отримайте файл register.pyіз цієї суті . Збережіть його на диску C або D, перейдіть до CMD, щоб запустити його:

'python register.py'

Тоді ви зможете його встановити.


Це найпростіше рішення. Дякую! Я зіткнувся з цією проблемою, коли намагаюся встановити wxPython2.8-win32-unicode-2.8.12.1-py27, і він завжди скаржиться, щоб python не зареєстрований
Robert1968

3

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

На момент написання .exe інсталятор не підтримує 64-розрядні версії Python для Windows через проблеми сумісності інсталятора .


цей насправді працював на мене! інший сценарій Джо ДФ не працював для мене
словаз того

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).


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 \ Main Python Documentation] @ = "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 \ Модулі]

[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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.