Installation de SetupTools sur Windows 64 bits

133

J'exécute Python 2.7 sur Windows 7 64 bits, et lorsque j'exécute le programme d'installation pour setuptools, cela m'indique que Python 2.7 n'est pas installé. Le message d'erreur spécifique est:

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

Ma version installée de Python est:

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

Je regarde le site setuptools et il ne mentionne aucun installateur pour Windows 64 bits. Ai-je manqué quelque chose ou dois-je l'installer à partir des sources?

quantique
la source
7
Note aux lecteurs: faites défiler vers le bas, la réponse acceptée n'est pas la meilleure.
Malheureusement, le programme d'installation 64 bits de SetupTools n'existait pas lorsque j'ai posté ma question, j'ai donc accepté la solution de contournement, sachant très bien qu'il s'agissait d'un piratage.
quanticule
2
@JohnRobertson quelle est alors la meilleure réponse?
rrs

Réponses:

91

Apparemment (après avoir rencontré des problèmes 64 et 32 ​​bits sous OS X), il y a un bogue dans le programme d'installation de Windows . Je suis tombé sur cette solution de contournement , qui pourrait aider - en gros, vous créez votre propre valeur de registre HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.6\InstallPathet copiez la valeur InstallPath à partir de HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath. Voir la réponse ci-dessous pour plus de détails.

Si vous faites cela, sachez que setuptools ne peut installer que des bibliothèques 32 bits .

REMARQUE: les réponses ci-dessous offrent plus de détails, veuillez donc les lire également.

Dave Everitt
la source
1
Fonctionne également avec l'installation de PIL (PIL-1.1.7.win32-py2.7).
panoramique du
142

Problème: vous avez Python 64 bits et un programme d'installation 32 bits. Cela entraînera des problèmes pour les modules d'extension.

Les raisons pour lesquelles le programme d'installation ne trouve pas Python est l'émulation 32 bits transparente de Windows 7. Les programmes 64 bits et 32 ​​bits écriront dans différentes parties du registre Windows.

64 bits: HKLM|HKCU\SOFTWARE\

32 bits: HKLM|HKCU\SOFTWARE\wow6432node\.

Cela signifie que le programme d'installation de Python 64 bits écrit dans HKLM\SOFTWARE\Python, mais que le programme d'installation de setuptools 32 bits regarde HKLM\SOFTWARE\wow6432node\Python(cela est géré automatiquement par Windows, les programmes ne le remarquent pas). Il s'agit d'un comportement attendu et non d'un bogue.

Habituellement, vous avez ces choix:

  • la manière «propre»: utilisez Python 32 bits si vous devez utiliser des modules ou des extensions 32 bits
  • l'autre façon «propre»: n'utiliser que des installateurs 64 bits avec Python 64 bits (voir ci-dessous)
  • ce que la réponse ci-dessus suggère: copier HKLM\SOFTWARE\Pythonvers HKLM\SOFTWARE\wow6432node\Python, mais cela posera des problèmes avec les distributions binaires, car Python 64 bits ne peut pas charger les modules compilés 32 bits (ne faites PAS cela!)
  • installer des modules Python purs avec setuptools au lieu du programme d'installation de distutils (easy_install ou pip)

Pour setuptools lui-même, par exemple, vous ne pouvez pas utiliser un programme d'installation 32 bits pour Python 64 bits car il inclut des fichiers binaires. Mais il existe un programme d'installation 64 bits à l' adresse http://www.lfd.uci.edu/~gohlke/pythonlibs/ (il a également de nombreux programmes d'installation pour d'autres modules) . De nos jours, de nombreux paquets sur PyPi ont des distributions binaires, vous pouvez donc les installer via pip.

Leoluk
la source
7
Excellent lien pour les installateurs non officiels!
Andriy Drozdyuk
Merci. J'ai résolu mon problème pour Python 2.7 avec amd64.
nmat
2
Il en va de même pour l'inverse (2.7 32 et setuptools 64) stackoverflow.com/a/10966396/404385 <- pour savoir quelle est votre version de python installée et 32/64
Cu7l4ss
1
Ce lien est de l'or pur!
Paul Becotte
1
Pour ceux qui ne savent pas comment installer un fichier whl, vous les installez en utilisant pip, commepip install xyz.whl
arun
69

J'ai créé un fichier de registre (.reg) qui changera automatiquement le registre pour vous. Cela fonctionne s'il est installé dans "C: \ Python27":

Télécharger la version 32 bits HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\wow6432node\

Télécharger la version 64 bits HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\

Joe DF
la source
3
Votre fichier REG a fonctionné pour moi mais j'ai eu le problème inverse, j'ai donc dû supprimer le "\ Wow6432Node" de tous les noms de clé.
pwhe23
Je suppose que je pourrais publier un lien pour 32 bits ..: P
Joe DF
Fichiers correctifs impressionnants! Génial! Merci pour ça!!
Benny Neugebauer
@BennyNeugebauer Pas de problème.
Joe DF
@EvanCaldwell Pas de problème!
Joe DF
28

Oui, vous avez raison, le problème vient de Python 64 bits et du programme d'installation 32 bits pour setuptools.

La meilleure façon d'installer setuptools 64 bits sur Windows est de télécharger ez_setup.py sur C: \ Python27 \ Scripts et de l'exécuter. Il téléchargera le fichier .egg 64 bits approprié pour setuptools et l'installera pour vous.

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

PS Je recommande de ne pas utiliser des installateurs tiers .exe setuptools 64 bits ou de manipuler le registre

arainchi
la source
2
Je ne peux pas croire à quel point cette solution était rapide et simple. J'ai passé des heures coincé sur d'autres avenues.
Brett
1
La meilleure solution et la plus sûre à mon avis!
djfranzwa
9

Créez un fichier nommé python2.7.reg(fichier de registre) et mettez-y ce contenu:

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"

Et assurez-vous que chaque chemin est correct!

Ensuite, exécutez (fusionnez) et faites :)

MichaelvdNet
la source
Merci! Je peux confirmer que cela fonctionne pour la configuration python 2.76 et h5py. Peut-être simplement mettre à jour le chemin de la documentation vers python276.chm pour le bon ordre :)
mork
9

Obtenez le fichier à register.pypartir de cet élément . Enregistrez-le sur votre lecteur C ou lecteur D, accédez à CMD pour l'exécuter avec:

'python register.py'

Ensuite, vous pourrez l'installer.

Nickleefly
la source
C'est la solution la plus simple. Merci! J'ai rencontré ce problème en essayant d'installer wxPython2.8-win32-unicode-2.8.12.1-py27 et il se plaint toujours de python non enregistré
Robert1968
3

Pour Python 64 bits sur Windows, téléchargez ez_setup.py et exécutez-le; il téléchargera le fichier .egg approprié et l'installera pour vous.

Au moment de l'écriture, le programme d'installation .exe ne prend pas en charge les versions 64 bits de Python pour Windows, en raison d'un problème de compatibilité du programme d'installation distutils .

Constantin
la source
celui-ci a vraiment fonctionné pour moi! l'autre script de Joe DF n'a pas fonctionné pour moi
wordsforthewise
1

Pour permettre aux installateurs Windows de trouver le répertoire Python installé dans Windows 7 , OU, modifiez l'installation Python dans laquelle installer un programme d'installation, ajoutez le chemin d'installation dans la valeur (par défaut) de la clé de registre InstallPath :

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

Où « X » est la version de Python (c'est-à-dire 2.5, 2.6 ou 2.7).

monkut
la source
1

J'ai essayé ce qui précède et l'ajout des clés de registre au LOCALMACHINE ne faisait pas le travail. Donc, au cas où vous seriez toujours bloqué, essayez ceci.

Éditeur du registre Windows 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 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"

Copiez collez ce qui précède dans le bloc-notes et enregistrez-le sous Python27.reg. Maintenant, exécutez / fusionnez le fichier comme mentionné dans les réponses ci-dessus. (Assurez-vous que les chemins d'installation de Python sont corrigés selon votre installation.

Il fait simplement, ce que les réponses ci-dessus suggèrent pour une machine locale, à l'utilisateur actuel.

Shaswat Rungta
la source
0

Voici un lien vers un autre article / fil de discussion. J'ai pu exécuter ce script pour automatiser l'enregistrement de Python 2.7. (Assurez-vous de l'exécuter à partir du Python 2.x que .exevous souhaitez enregistrer!)

Pour enregistrer Python 3.x, j'ai dû modifier la printsyntaxe et importer winreg(au lieu de _winreg), puis exécuter Python 3 .exe.

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

robertberrington
la source