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.