Instalowanie SetupTools w 64-bitowym systemie Windows

133

Używam Pythona 2.7 w 64-bitowym systemie Windows 7, a kiedy uruchamiam instalator setuptools, informuje mnie, że Python 2.7 nie jest zainstalowany. Konkretny komunikat o błędzie to:

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

Moja zainstalowana wersja Pythona to:

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

Patrzę na stronę setuptools i nie wspomina o żadnych instalatorach dla 64-bitowego systemu Windows. Czy coś przeoczyłem, czy muszę to zainstalować ze źródła?

ilość
źródło
7
Uwaga dla czytelników: przewiń w dół, zaakceptowana odpowiedź nie jest najlepsza.
Niestety, 64-bitowy instalator SetupTools nie istniał, kiedy opublikowałem moje pytanie, więc zaakceptowałem obejście, wiedząc doskonale, że to hack.
quanticle
2
@JohnRobertson jaka jest zatem najlepsza odpowiedź?
rrs

Odpowiedzi:

91

Najwyraźniej (po napotkaniu powiązanych problemów 64- i 32-bitowych na OS X) jest błąd w instalatorze Windows . Natknąłem się na to obejście , które może pomóc - w zasadzie tworzysz własną wartość rejestru HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.6\InstallPathi kopiujesz wartość InstallPath z HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath. Zobacz odpowiedź poniżej, aby uzyskać więcej informacji.

Jeśli to zrobisz, uważaj, że setuptools może instalować tylko biblioteki 32-bitowe .

UWAGA: poniższe odpowiedzi zawierają więcej szczegółów, więc przeczytaj je również.

Dave Everitt
źródło
1
Działa również z instalacją PIL (PIL-1.1.7.win32-py2.7).
panny
142

Problem: masz 64-bitowy Python i 32-bitowy instalator. Spowoduje to problemy dla modułów rozszerzeń.

Powodem, dla którego instalator nie znajduje Pythona, jest przezroczysta 32-bitowa emulacja systemu Windows 7. Programy 64-bitowe i 32-bitowe będą zapisywać w różnych częściach rejestru systemu Windows.

64-bitowy: HKLM|HKCU\SOFTWARE\

32-bitowe: HKLM|HKCU\SOFTWARE\wow6432node\.

Oznacza to, że 64-bitowy instalator Pythona zapisuje w programie HKLM\SOFTWARE\Python, ale 32-bitowy instalator setuptools sprawdza HKLM\SOFTWARE\wow6432node\Python(jest to obsługiwane przez system Windows automatycznie, programy tego nie zauważają). Jest to oczekiwane zachowanie, a nie błąd.

Zwykle masz następujące możliwości:

  • „czysty” sposób: użyj 32-bitowego Pythona, jeśli musisz używać 32-bitowych modułów lub rozszerzeń
  • drugi „czysty” sposób: używaj tylko instalatorów 64-bitowych podczas używania 64-bitowego Pythona (patrz poniżej)
  • co sugeruje, że odpowiedź powyżej: Skopiuj HKLM\SOFTWARE\Pythondo HKLM\SOFTWARE\wow6432node\Python, ale to będzie powodować problemy z rozkładami binarnych, jako 64-bitowe Python nie można załadować 32-bitowe skompilowanych modułów (nie rób tego!)
  • zainstaluj moduły czystego Pythona za pomocą setuptools zamiast instalatora distutils (easy_install lub pip)

Na przykład w przypadku samego setuptools nie można użyć 32-bitowego instalatora dla 64-bitowego Pythona, ponieważ zawiera on pliki binarne. Ale jest 64-bitowy instalator pod adresem http://www.lfd.uci.edu/~gohlke/pythonlibs/ (ma też wiele instalatorów dla innych modułów) . Obecnie wiele pakietów na PyPi ma dystrybucje binarne, więc możesz je zainstalować przez pip.

leoluk
źródło
7
Świetny link dla nieoficjalnych instalatorów!
Andriy Drozdyuk
Dzięki. Rozwiązałem mój problem dla Pythona 2.7 z amd64.
nmat
2
To samo dotyczy
odwrotnej sytuacji
1
Ten link to czyste złoto!
Paul Becotte,
1
Dla tych, którzy nie wiedzą, jak zainstalować plik whl, zainstaluj je za pomocą pip, na przykładpip install xyz.whl
arun
69

Utworzyłem plik rejestru (.reg), który automatycznie zmieni rejestr za Ciebie. Działa, jeśli jest zainstalowany w „C: \ Python27”:

Pobierz wersję 32-bitową HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\wow6432node\

Pobierz wersję 64-bitową HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\

Joe DF
źródło
3
Twój plik REG działał dla mnie, ale miałem odwrotny problem, więc musiałem usunąć „\ Wow6432Node” ze wszystkich nazw kluczy.
pwhe23
Myślę, że mógłbym zamieścić link do 32-bitowego ..: P
Joe DF
Niesamowite pliki łat! Wspaniały! Dziękuję za to!!
Benny Neugebauer
@BennyNeugebauer Nie ma problemu.
Joe DF
@EvanCaldwell Nie ma problemu!
Joe DF
28

Tak, masz rację, problem dotyczy 64-bitowego Pythona i 32-bitowego instalatora dla setuptools.

Najlepszym sposobem na zainstalowanie 64-bitowych narzędzi setuptools w systemie Windows jest pobranie pliku ez_setup.py do C: \ Python27 \ Scripts i uruchomienie go. Pobierze odpowiedni 64-bitowy plik .egg dla setuptools i zainstaluje go dla Ciebie.

Źródło: http://pypi.python.org/pypi/setuptools

PS Odradzam używanie instalatorów setuptools 64-bitowych plików .exe innych firm lub manipulowanie rejestrem

arainchi
źródło
2
nie mogę uwierzyć, jak szybkie i łatwe było to rozwiązanie. Godzinami utknąłem na innych drogach.
Brett
1
Najlepsze i najbezpieczniejsze moim zdaniem rozwiązanie!
djfranzwa
9

Utwórz plik o nazwie python2.7.reg(plik rejestru) i umieść w nim tę zawartość:

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"

I upewnij się, że każda ścieżka jest właściwa!

Następnie uruchom (połącz) to i gotowe :)

MichaelvdNet
źródło
Dzięki! Mogę potwierdzić, że działa w przypadku konfiguracji Pythona 2.76 i h5py. Może po prostu zaktualizuj ścieżkę do dokumentu do python276.chm, aby zachować porządek :)
mork
9

Pobierz plik register.pyz tego sedna . Zapisz go na dysku C lub D, przejdź do CMD, aby uruchomić go z:

'python register.py'

Wtedy będziesz mógł go zainstalować.

nickleefly
źródło
To najprostsze rozwiązanie. Dzięki! Napotkałem ten problem, próbując zainstalować wxPython2.8-win32-unicode-2.8.12.1-py27 i zawsze narzeka na niezarejestrowany Python
Robert1968
3

W przypadku 64-bitowego Pythona w systemie Windows pobierz plik ez_setup.py i uruchom go; pobierze odpowiedni plik .egg i zainstaluje go dla Ciebie.

W chwili pisania tego tekstu instalator .exe nie obsługuje 64-bitowych wersji Pythona dla systemu Windows ze względu na problem ze zgodnością instalatora distutils .

Constantin
źródło
ten faktycznie działał dla mnie! inny scenariusz autorstwa Joe DF nie działał dla mnie
słowa z
1

Aby umożliwić instalatorom systemu Windows znalezienie zainstalowanego katalogu języka Python w systemie Windows 7 LUB, zmień instalację języka Python, w którym ma zostać zainstalowany instalator, dodaj zainstalowaną ścieżkę do (domyślnej) wartości klucza rejestru InstallPath :

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

Gdzie „ X ” to wersja Pythona (czyli 2.5, 2.6 lub 2.7).

monkut
źródło
1

Wypróbowałem powyższe i dodanie kluczy rejestru do LOCALMACHINE nie pozwalało na wykonanie zadania. Więc jeśli nadal utkniesz, spróbuj tego.

Edytor rejestru systemu Windows w wersji 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 \ Główna dokumentacja Pythona] @ = "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"

Skopiuj, wklej powyższe do notatnika i zapisz jako Python27.reg. Teraz uruchom / połącz plik, jak wspomniano w odpowiedziach powyżej. (Upewnij się, że ścieżki instalacji Pythona są poprawione zgodnie z twoją instalacją.

Po prostu robi to, co sugerują powyższe odpowiedzi dla lokalnego komputera, dla bieżącego użytkownika.

Shaswat Rungta
źródło
0

Oto link do innego posta / wątku. Udało mi się uruchomić ten skrypt, aby zautomatyzować rejestrację Pythona 2.7. (Upewnij się, że uruchamiasz go z Pythona 2.x, .exektóry chcesz zarejestrować!)

Aby zarejestrować Python 3.x musiałem zmodyfikować printskładnię i zaimportować winreg(zamiast _winreg), a następnie uruchomić Python 3 .exe.

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

robertberrington
źródło