Installazione di SetupTools su Windows a 64 bit


133

Sto eseguendo Python 2.7 su Windows 7 a 64 bit e quando eseguo il programma di installazione per setuptools mi dice che Python 2.7 non è installato. Il messaggio di errore specifico è:

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

La mia versione installata di Python è:

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

Sto guardando il sito setuptools e non menziona alcun programma di installazione per Windows a 64 bit. Ho perso qualcosa o devo installarlo dal sorgente?


7
Nota per i lettori: scorrere verso il basso, la risposta accettata non è la migliore.

Sfortunatamente, il programma di installazione SetupTools a 64 bit non esisteva quando ho pubblicato la mia domanda, quindi ho accettato la soluzione alternativa, sapendo perfettamente che si tratta di un hack.
quanticle

2
@JohnRobertson qual è la risposta migliore allora?
RRS

Risposte:


91

Apparentemente (avendo riscontrato problemi relativi a 64 e 32 bit su OS X) c'è un bug nel programma di installazione di Windows . Mi sono imbattuto in questa soluzione alternativa , che potrebbe essere di aiuto: in pratica, si crea il proprio valore di registro HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.6\InstallPathe si copia sul valore InstallPath da HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath. Vedi la risposta sotto per maggiori dettagli.

In questo caso, attenzione che setuptools può installare solo librerie a 32 bit .

NOTA: le risposte che seguono offrono maggiori dettagli, quindi per favore leggi anche queste.


1
Funziona anche con l'installazione di PIL (PIL-1.1.7.win32-py2.7).
panny,

142

Problema: hai Python a 64 bit e un programma di installazione a 32 bit. Ciò causerà problemi per i moduli di estensione.

I motivi per cui il programma di installazione non trova Python è l'emulazione trasparente a 32 bit da Windows 7. I programmi a 64 e 32 bit scriveranno in diverse parti del registro di Windows.

64-bit: HKLM|HKCU\SOFTWARE\

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

Ciò significa che il programma di installazione di Python a 64 bit scrive HKLM\SOFTWARE\Python, ma il programma di installazione di Setuptools a 32 bit guarda HKLM\SOFTWARE\wow6432node\Python(questo è gestito automaticamente da Windows, i programmi non se ne accorgono). Questo è un comportamento previsto e non un bug.

Di solito, hai queste scelte:

  • il modo "pulito": usa Python a 32 bit se devi usare moduli o estensioni a 32 bit
  • l'altro modo "pulito": utilizzare i programmi di installazione a 64 bit solo quando si utilizza Python a 64 bit (vedere di seguito)
  • ciò la risposta sopra suggerisce: copia HKLM\SOFTWARE\Pythona HKLM\SOFTWARE\wow6432node\Python, ma questo sarà causare problemi con distribuzioni binarie, come 64 bit Python non può caricare 32 bit moduli compilati (non fare questo!)
  • installa moduli Python puri con setuptools invece del programma di installazione distutils (easy_install o pip)

Per gli stessi setuptools, ad esempio, non è possibile utilizzare un programma di installazione a 32 bit per Python a 64 bit poiché include file binari. Ma c'è un programma di installazione a 64 bit su http://www.lfd.uci.edu/~gohlke/pythonlibs/ (ha molti programmi di installazione anche per altri moduli) . Oggi molti pacchetti su PyPi hanno distribuzioni binarie, quindi puoi installarli tramite pip.


7
Ottimo collegamento per installatori non ufficiali!
Andriy Drozdyuk,

Grazie. Risolto il mio problema con Python 2.7 con amd64.
nmat,

2
Lo stesso vale per il contrario (2.7 32 e setuptools 64) stackoverflow.com/a/10966396/404385 <- per scoprire qual è la tua versione di Python installata e 32/64
Cu7l4ss,

1
Quel collegamento è oro puro!
Paul Becotte,

1
Per coloro che non sanno come installare un file WHL, si installa utilizzando pip, comepip install xyz.whl
Arun

69

Ho creato un file di registro (.reg) che cambierà automaticamente il registro per te. Funziona se è installato in "C: \ Python27":

Scarica la versione a 32 bit HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\wow6432node\

Scarica la versione a 64 bit HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\


3
Il tuo file REG ha funzionato per me, ma ho avuto il problema opposto, quindi ho dovuto rimuovere il "\ Wow6432Node" da tutti i nomi delle chiavi.
pwhe23,

Immagino di poter pubblicare un link per 32 bit ..: P
Joe DF

Fantastici file patch! Grande! Grazie per questo!!
Benny Neugebauer,

@BennyNeugebauer Nessun problema.
Joe DF,

@EvanCaldwell Nessun problema!
Joe DF,

28

Sì, hai ragione, il problema riguarda Python a 64 bit e il programma di installazione a 32 bit per gli strumenti di installazione.

Il modo migliore per installare setuptools a 64 bit su Windows è scaricare ez_setup.py in C: \ Python27 \ Scripts ed eseguirlo. Scaricherà il file .egg a 64 bit appropriato per setuptools e lo installerà per te.

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

PS: sconsiglio di utilizzare programmi di installazione .exe a 64 bit di terze parti o di manipolare il registro


2
non riesco a credere quanto sia stata semplice e veloce questa soluzione. Ho passato ore bloccate su altri viali.
Brett

1
La soluzione migliore e più sicura secondo me!
djfranzwa,

9

Crea un file chiamato python2.7.reg(file di registro) e inserisci questo contenuto:

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"

E assicurati che ogni percorso sia giusto!

Quindi esegui (unisci) e fatto :)


Grazie! Posso confermare che funziona per l'installazione di Python 2.76 e h5py. Forse basta aggiornare il percorso doc a python276.chm per il buon ordine :)
mork,

9

Ottieni il file register.pyda questa sintesi . Salvalo sul tuo disco C o D, vai su CMD per eseguirlo con:

'python register.py'

Quindi sarai in grado di installarlo.


Questa è la soluzione più semplice. Grazie! Ho riscontrato questo problema quando provavo a installare wxPython2.8-win32-unicode-2.8.12.1-py27 e si lamenta sempre di python non registrato
Robert1968,


1

Per consentire ai programmi di installazione di Windows di trovare la directory Python installata in Windows 7 , OR, modificare l'installazione di Python in cui installare un programma di installazione, aggiungere il percorso installato nel valore (Predefinito) della chiave di registro InstallPath :

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

Dove " X " è la versione di Python (ovvero 2.5, 2.6 o 2.7).


1

Ho provato quanto sopra e l'aggiunta delle chiavi di registro a LOCALMACHINE non ha portato a termine il lavoro. Quindi, se sei ancora bloccato, prova questo.

Editor del registro di Windows Versione 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 \ Modules]

[HKEY_CURRENT_USER \ SOFTWARE \ Python \ PythonCore \ 2.7 \ PythonPath] @ = "C: \ Python27 \ Lib; C: \ Python27 \ DLLs; C: \ Python27 \ Lib \ lib-tk"

Copia incolla quanto sopra nel blocco note e salvalo come Python27.reg. Ora esegui / unisci il file come indicato nelle risposte sopra. (Assicurati che i percorsi dell'installazione di Python siano corretti secondo la tua installazione.

Fa semplicemente, ciò che le risposte sopra suggeriscono per un computer locale, all'utente corrente.


0

Ecco un link ad un altro post / thread. Sono stato in grado di eseguire questo script per automatizzare la registrazione di Python 2.7. (Assicurati di eseguirlo dal Python 2.x .exeche vuoi registrare!)

Per registrare Python 3.x ho dovuto modificare la printsintassi e importare winreg(anziché _winreg), quindi eseguire Python 3 .exe.

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


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.