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?


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


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.


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\


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


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


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


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 .


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


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.


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


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.