Installieren von SetupTools unter 64-Bit-Windows

133

Ich verwende Python 2.7 unter Windows 7 64-Bit. Wenn ich das Installationsprogramm für Setuptools ausführe, wird mir mitgeteilt, dass Python 2.7 nicht installiert ist. Die spezifische Fehlermeldung lautet:

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

Meine installierte Version von Python ist:

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

Ich schaue auf die Setuptools-Site und sie erwähnt keine Installationsprogramme für 64-Bit-Windows. Habe ich etwas verpasst oder muss ich dies von der Quelle installieren?

Quantikel
quelle
7
Hinweis für die Leser: Scrollen Sie nach unten, die akzeptierte Antwort ist nicht die beste.
Leider existierte das 64-Bit-SetupTools-Installationsprogramm nicht, als ich meine Frage stellte, und so akzeptierte ich die Problemumgehung, da ich genau wusste, dass es sich um einen Hack handelt.
Quantikel
2
@ JohnRobertson was ist dann die beste Antwort?
rrs

Antworten:

91

Anscheinend (nachdem 64- und 32-Bit-Probleme unter OS X aufgetreten sind) liegt ein Fehler im Windows-Installationsprogramm vor . Ich bin auf diese Problemumgehung gestoßen , die möglicherweise hilfreich ist. Im Grunde erstellen Sie Ihren eigenen Registrierungswert HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.6\InstallPathund kopieren den InstallPath-Wert von HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath. Weitere Informationen finden Sie in der Antwort unten.

Beachten Sie in diesem Fall, dass setuptools möglicherweise nur 32-Bit-Bibliotheken installiert .

HINWEIS: Die folgenden Antworten enthalten weitere Details. Lesen Sie sie daher auch.

Dave Everitt
quelle
1
Funktioniert auch mit der Installation von PIL (PIL-1.1.7.win32-py2.7).
Panny
142

Problem: Sie haben 64-Bit-Python und ein 32-Bit-Installationsprogramm. Dies führt zu Problemen bei Erweiterungsmodulen.

Der Grund, warum das Installationsprogramm Python nicht findet, ist die transparente 32-Bit-Emulation von Windows 7. 64-Bit- und 32-Bit-Programme schreiben in verschiedene Teile der Windows-Registrierung.

64-Bit: HKLM|HKCU\SOFTWARE\

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

Dies bedeutet, dass das 64-Bit-Python-Installationsprogramm darauf schreibt HKLM\SOFTWARE\Python, das 32-Bit-Setuptools-Installationsprogramm jedoch HKLM\SOFTWARE\wow6432node\Python(dies wird von Windows automatisch erledigt, Programme bemerken es nicht). Dies ist erwartetes Verhalten und kein Fehler.

Normalerweise haben Sie folgende Möglichkeiten:

  • Die "saubere" Art: Verwenden Sie 32-Bit-Python, wenn Sie 32-Bit-Module oder -Erweiterungen verwenden müssen
  • die andere "saubere" Art: Verwenden Sie nur 64-Bit-Installationsprogramme, wenn Sie 64-Bit-Python verwenden (siehe unten).
  • Was die obige Antwort nahelegt: Kopieren HKLM\SOFTWARE\Pythonnach HKLM\SOFTWARE\wow6432node\Python, aber dies führt zu Problemen mit Binärverteilungen, da 64-Bit-Python keine kompilierten 32-Bit-Module laden kann (tun Sie dies NICHT!).
  • Installieren Sie reine Python-Module mit setuptools anstelle des distutils-Installationsprogramms (easy_install oder pip).

Für setuptools selbst können Sie beispielsweise kein 32-Bit-Installationsprogramm für 64-Bit-Python verwenden, da es Binärdateien enthält. Es gibt jedoch ein 64-Bit-Installationsprogramm unter http://www.lfd.uci.edu/~gohlke/pythonlibs/ (es gibt auch viele Installationsprogramme für andere Module) . Heutzutage haben viele Pakete auf PyPi Binärdistributionen, sodass Sie sie über pip installieren können.

Leoluk
quelle
7
Toller Link für inoffizielle Installateure!
Andriy Drozdyuk
Vielen Dank. Ich habe mein Problem für Python 2.7 mit amd64 gelöst.
nmat
2
Gleiches gilt für den umgekehrten Fall (2.7 32 und setuptools 64) stackoverflow.com/a/10966396/404385 <- um herauszufinden, was Ihre installierte Python-
Version
1
Dieser Link ist reines Gold!
Paul Becotte
1
Für diejenigen, die nicht wissen, wie man eine whl-Datei installiert, installieren Sie sie mit pip, wiepip install xyz.whl
arun
69

Ich habe eine Registrierungsdatei (.reg) erstellt, die die Registrierung automatisch für Sie ändert. Es funktioniert, wenn es in "C: \ Python27" installiert ist:

Laden Sie die 32-Bit-Version herunter HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\wow6432node\

Laden Sie die 64-Bit-Version herunter HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\

Joe DF
quelle
3
Ihre REG-Datei hat bei mir funktioniert, aber ich hatte das gegenteilige Problem, sodass ich den "\ Wow6432Node" aus allen Schlüsselnamen entfernen musste.
pwhe23
Ich denke, ich könnte einen Link für 32bit posten ..: P
Joe DF
Tolle Patch-Dateien! Toll! Danke für das!!
Benny Neugebauer
@BennyNeugebauer Kein Problem.
Joe DF
@EvanCaldwell Kein Problem!
Joe DF
28

Ja, Sie haben Recht, das Problem liegt bei 64-Bit-Python und 32-Bit-Installationsprogramm für Setuptools.

Der beste Weg, um 64-Bit-Setuptools unter Windows zu installieren, besteht darin, ez_setup.py in C: \ Python27 \ Scripts herunterzuladen und auszuführen. Es wird die entsprechende 64-Bit-.egg-Datei für setuptools herunterladen und für Sie installieren.

Quelle: http://pypi.python.org/pypi/setuptools

PS Ich würde empfehlen, keine 64-Bit-EXupt-Setuptools-Installationsprogramme von Drittanbietern zu verwenden oder die Registrierung zu manipulieren

arainchi
quelle
2
Ich kann nicht glauben, wie schnell und einfach diese Lösung war. Ich verbrachte Stunden auf anderen Wegen.
Brett
1
Beste und sicherste Lösung meiner Meinung nach!
Djfranzwa
9

Erstellen Sie eine Datei mit dem Namen python2.7.reg(Registrierungsdatei) und fügen Sie diesen Inhalt ein:

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"

Und stellen Sie sicher, dass jeder Weg richtig ist!

Dann laufen (zusammenführen) und fertig :)

MichaelvdNet
quelle
Vielen Dank! Ich kann bestätigen, dass es für Python 2.76 und h5py funktioniert. Vielleicht aktualisieren Sie einfach den Dokumentpfad auf python276.chm für die gute Reihenfolge :)
mork
9

Holen Sie sich die Datei register.pyaus diesem Kern . Speichern Sie es auf Ihrem C-Laufwerk oder D-Laufwerk. Gehen Sie zu CMD, um es auszuführen mit:

'python register.py'

Dann können Sie es installieren.

Nickleefly
quelle
Dies ist die einfachste Lösung. Vielen Dank! Ich bin auf dieses Problem gestoßen, als ich versucht habe, wxPython2.8-win32-unicode-2.8.12.1-py27 zu installieren, und es beschwert sich immer über nicht registriertes Python
Robert1968
3

Laden Sie für 64-Bit-Python unter Windows ez_setup.py herunter und führen Sie es aus. Es wird die entsprechende .egg-Datei herunterladen und für Sie installieren.

Zum Zeitpunkt des Schreibens unterstützt das EXE-Installationsprogramm aufgrund eines Kompatibilitätsproblems mit dem Distutils-Installationsprogramm keine 64-Bit-Versionen von Python für Windows .

Constantin
quelle
Dieser hat tatsächlich für mich gearbeitet! Das andere Skript von Joe DF hat bei mir nicht funktioniert
Wörter für den
1

Damit Windows Installer die installierte Python - Verzeichnis in finden Windows 7 , OR, Änderung , die Python - Installation ein Installationsprogramm in, fügen Sie den installierten Pfad in die Installation InstallPath Registrierungsschlüssel ist (Default) Wert:

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

Wobei " X " die Python-Version ist (dh 2.5, 2.6 oder 2.7).

Mönch
quelle
1

Ich habe das oben genannte versucht und das Hinzufügen der Registrierungsschlüssel zur LOCALMACHINE hat den Job nicht erledigt. Versuchen Sie dies, falls Sie immer noch nicht weiterkommen.

Windows Registry Editor Version 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-Dokumentation] @ = "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"

Kopieren Sie das Obige, fügen Sie es in den Editor ein und speichern Sie es als Python27.reg. Führen Sie nun die Datei wie in den obigen Antworten angegeben aus / führen Sie sie zusammen. (Stellen Sie sicher, dass die Pfade der Python-Installation gemäß Ihrer Installation korrigiert sind.

Es tut dem aktuellen Benutzer einfach, was die obigen Antworten für einen lokalen Computer vorschlagen.

Shaswat Rungta
quelle
0

Hier ist ein Link zu einem anderen Beitrag / Thread. Ich konnte dieses Skript ausführen, um die Registrierung von Python 2.7 zu automatisieren. (Stellen Sie sicher, dass Sie es von Python 2.x ausführen, das .exeSie registrieren möchten!)

Um Python 3.x zu registrieren, musste ich die printSyntax ändern und winreg(anstelle von _winreg) importieren und dann Python 3 ausführen .exe.

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

Robertberrington
quelle