Instalando o SetupTools no Windows de 64 bits

133

Estou executando o Python 2.7 no Windows 7 de 64 bits e, quando executo o instalador do setuptools, ele informa que o Python 2.7 não está instalado. A mensagem de erro específica é:

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

Minha versão instalada do Python é:

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

Estou olhando o site setuptools e ele não menciona nenhum instalador para o Windows de 64 bits. Perdi alguma coisa ou tenho que instalá-la da fonte?

quanticle
fonte
7
Nota aos leitores: role para baixo, a resposta aceita não é a melhor.
Infelizmente, o instalador do SetupTools de 64 bits não existia quando postei minha pergunta, por isso aceitei a solução alternativa, sabendo muito bem que é um hack.
Quanticle 26/05
2
@JohnRobertson qual é a melhor resposta então?
rrs 14/01

Respostas:

91

Aparentemente (tendo enfrentado problemas relacionados de 64 e 32 bits no OS X), há um erro no instalador do Windows . Eu me deparei com essa solução alternativa , o que pode ajudar - basicamente, você cria seu próprio valor de registro HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.6\InstallPathe copia o valor InstallPath de HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath. Veja a resposta abaixo para mais detalhes.

Se você fizer isso, lembre-se de que o setuptools pode instalar apenas bibliotecas de 32 bits .

NOTA: as respostas abaixo oferecem mais detalhes, portanto, leia-as também.

Dave Everitt
fonte
1
Também funciona com a instalação do PIL (PIL-1.1.7.win32-py2.7).
panny
142

Problema: você tem Python de 64 bits e um instalador de 32 bits. Isso causará problemas para os módulos de extensão.

O motivo pelo qual o instalador não encontra o Python é a emulação transparente de 32 bits do Windows 7. Os programas de 64 e 32 bits serão gravados em diferentes partes do registro do Windows.

64 bits: HKLM|HKCU\SOFTWARE\

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

Isso significa que o instalador do Python de 64 bits grava HKLM\SOFTWARE\Python, mas o instalador de ferramentas de instalação de 32 bits examinaHKLM\SOFTWARE\wow6432node\Python (isso é tratado pelo Windows automaticamente, os programas não percebem). Esse é o comportamento esperado e não um bug.

Geralmente, você tem estas opções:

  • da maneira "limpa": use Python de 32 bits se precisar usar módulos ou extensões de 32 bits
  • a outra maneira "limpa": use apenas instaladores de 64 bits ao usar o Python de 64 bits (veja abaixo)
  • qual é a resposta acima sugere: cópia HKLM\SOFTWARE\Pythonpara HKLM\SOFTWARE\wow6432node\Python, mas isso vai causar problemas com a distribuição binária, como 64-bit Python não pode carregar 32 bits módulos compilados (não faça isso!)
  • instale módulos Python puros com setuptools em vez do instalador do distutils (easy_install ou pip)

Para as próprias ferramentas de instalação, por exemplo, não é possível usar um instalador de 32 bits para o Python de 64 bits, pois inclui arquivos binários. Mas há um instalador de 64 bits em http://www.lfd.uci.edu/~gohlke/pythonlibs/ (também possui muitos instaladores para outros módulos) . Atualmente, muitos pacotes no PyPi têm distribuições binárias, para que você possa instalá-los via pip.

leoluk
fonte
7
Ótimo link para instaladores não oficiais!
Andriy Drozdyuk
Obrigado. Resolvi meu problema para o Python 2.7 com o amd64.
N /
2
O mesmo vale para o inverso (2,7 32 e setuptools 64) stackoverflow.com/a/10966396/404385 <- para descobrir qual é o seu python instalado ver e 32/64
Cu7l4ss
1
Esse link é ouro puro!
Paul Becotte
1
Para aqueles que não sabem como instalar um arquivo whl, você instalá-los usando pip, comopip install xyz.whl
Arun
69

Eu criei um arquivo de registro (.reg) que alterará automaticamente o registro para você. Funciona se estiver instalado em "C: \ Python27":

Baixar versão de 32 bits HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\wow6432node\

Baixe a versão de 64 bits HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER\SOFTWARE\

Joe DF
fonte
3
Seu arquivo REG funcionou para mim, mas eu tive o problema oposto, então tive que remover o "\ Wow6432Node" de todos os nomes de chave.
Pwhe23
Eu acho que eu poderia postar um link para 32 bits ..: P
Joe DF
Arquivos de patch impressionantes! Ótimo! Obrigado por isso !!
Benny Neugebauer
@BennyNeugebauer Sem problemas.
21420 Joe Joe DF1
@EvanCaldwell Sem problemas!
Joe DF
28

Sim, você está correto, o problema está no Python de 64 bits e no instalador de 32 bits para as ferramentas de instalação.

A melhor maneira de instalar as ferramentas de instalação de 64 bits no Windows é baixar o ez_setup.py para C: \ Python27 \ Scripts e executá-lo. Ele fará o download do arquivo .egg de 64 bits apropriado para o setuptools e o instalará para você.

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

PS: eu recomendaria não usar os instaladores de terceiros de 64 bits. Setuptools ou manipular o registro

arainchi
fonte
2
Não posso acreditar o quão rápido e fácil essa solução foi. Passei horas presas em outras avenidas.
Brett
1
Melhor e mais segura solução na minha opinião!
precisa saber é o seguinte
9

Crie um arquivo chamado python2.7.reg(arquivo de registro) e coloque este conteúdo nele:

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 verifique se todos os caminhos estão corretos!

Em seguida, execute (mesclar) e pronto :)

MichaelvdNet
fonte
Obrigado! Posso confirmar que funciona para a instalação do python 2.76 e h5py. Talvez apenas atualizar o caminho doc para python276.chm para a boa ordem :)
Mork
9

Obter o arquivo register.pya partir desta essência . Salve-o em sua unidade C ou D, vá para o CMD para executá-lo com:

'python register.py'

Então você poderá instalá-lo.

nickleefly
fonte
Esta é a solução mais simples. Obrigado! Eu encontrei este problema quando tentar instalar wxPython2.8-win32-unicode-2.8.12.1-py27 e hair reclama com python não registrados
Robert1968
3

Para Python de 64 bits no Windows, baixe ez_setup.py e execute-o; ele fará o download do arquivo .egg apropriado e o instalará para você.

No momento da escrita, o instalador .exe não suporta versões de 64 bits do Python para Windows, devido a um problema de compatibilidade do instalador do distutils .

Constantin
fonte
este realmente funcionou para mim! o outro script de Joe DF não funcionou para mim
wordsforthewise 17/04
1

Para permitir que os instaladores do Windows localizem o diretório Python instalado no Windows 7 , OR, altere em qual instalação do Python instalar um instalador, adicione o caminho instalado ao valor (Padrão) da chave de registro InstallPath :

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

Onde " X " é a versão do Python (ou seja, 2.5, 2.6 ou 2.7).

monkut
fonte
1

Eu tentei o acima e adicionar as chaves de registro ao LOCALMACHINE não estava fazendo o trabalho. Portanto, caso você ainda esteja preso, tente isso.

Editor do Registro do Windows versão 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 \ Documentação principal do Python] @ = "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"

Copie e cole o acima no bloco de notas e salve-o como Python27.reg. Agora execute / mescle o arquivo conforme mencionado nas respostas acima. (Verifique se os caminhos da instalação do Python estão corrigidos de acordo com sua instalação.

Simplesmente faz, o que as respostas acima sugerem para uma máquina local, para o usuário atual.

Shaswat Rungta
fonte
0

Aqui está um link para outro post / tópico. Consegui executar este script para automatizar o registro do Python 2.7. (Certifique-se de executá-lo no Python 2.x que .exevocê deseja registrar!)

Para registrar o Python 3.x, tive que modificar a printsintaxe e importar winreg(em vez de _winreg) e, em seguida, executar o Python 3 .exe.

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

robertberrington
fonte