O Virtualenv é ótimo: permite-me manter várias instalações distintas do Python para que as dependências dos diferentes projetos não sejam todas reunidas em uma pilha comum.
Mas se eu quiser instalar um pacote no Windows empacotado como instalador .exe, como posso direcioná-lo para a instalação no virtualenv? Por exemplo, tenho pycuda-0.94rc.win32-py2.6.exe. Quando o executo, ele examina o registro e encontra apenas um Python26 para instalar, o comum no qual meu virtualenv se baseia.
Como posso direcioná-lo para a instalação no virtualenv?
python
windows
virtualenv
Ned Batchelder
fonte
fonte
Respostas:
Sim você pode. Tudo o que você precisa é
Surpreso? Parece que os instaladores binários para Windows feitos com distutils combinam .exe com .zip em um arquivo .exe. Altere a extensão para .zip para ver se é um arquivo zip válido. Descobri isso depois de ler as respostas da minha pergunta. Onde posso baixar os ovos binários com o psycopg2 para Windows?
ATUALIZAR
Como observado por Tritium21 em sua resposta hoje em dia, você deve usar pip em vez de easy_install. O Pip não pode instalar pacotes binários criados pelo distutils, mas pode instalar pacotes binários no novo formato de roda . Você pode converter do formato antigo para o novo usando o pacote wheel , que você deve instalar primeiro.
fonte
Sei que essa é uma pergunta bastante antiga e antecede as ferramentas sobre as quais estou prestes a falar, mas, pelo bem do Google, acho uma boa idéia mencioná-la. easy_install é a ovelha negra do empacotamento python. Ninguém quer admitir usá-lo com a nova gostosura de pip ao redor. Além disso, enquanto executar truques de registro funcionará melhor para instaladores EXE não padrão (alguém construiu o instalador por conta própria, em vez de usar distutils, e está verificando o registro quanto ao caminho da instalação), agora existe uma maneira melhor (c) para instaladores EXE padrão .
O formato da roda, introduzido recentemente a partir deste post, é o substituto do formato do ovo, desempenhando praticamente o mesmo papel. Este formato também é suportado pelo pip (uma ferramenta já instalada no seu virtualenv).
se por algum motivo
pip install WHEELFILE
não funcionar, tentewheel install WHEELFILE
fonte
wheel install WHEELFILE
, responda editado para apontar a existência disso. Depurar um problema específico para alguém não é algo trivial nos comentários do SO.Acabei adaptando um script ( http://effbot.org/zone/python-register.htm ) para registrar uma instalação do Python no registro. Posso escolher o Python como o Python no registro, executar o instalador do Windows e definir o registro novamente:
Execute esse script com o Python que você deseja registrar e ele será inserido no registro. Observe que no Windows 7 e Vista, você precisará de privilégios de administrador.
fonte
regpath = "SOFTWARE\\Wow6432Node\\Python\\Pythoncore\\%s\\" % (version)
O easy_install é capaz de instalar pacotes .exe desde que tenham sido criados usando o destino bdist_wininst do distutils, que abrange muitos pacotes populares. No entanto, existem muitas outras que não são (wxPython é uma que eu lutei)
fonte
Você pode usar o easy_install do ambiente para instalar o PyCUDA.
ele lhe dará a mesma versão 0.94rc.
No Windows, o easy_install.exe estará no diretório Scripts.
fonte
Se for um
.msi
, você poderá especificar opções de linha de comando usandomsiexec
. O próprio instalador do Python permiteTARGETDIR
, mas não tenho certeza se o distutils faz isso com instaladores de distribuição.Se você estiver usando um
.exe
, não acho que exista uma maneira limpa. Uma opção é usar um programa como 7Zip (ou winzip, etc) para extrair diretamente o conteúdo do exe e, em seguida, copiar as pastas relevantes na pasta de pacotes de sites virtuais. Por exemplo, se eu extrair "processing-0.5.2.win32-py2.5.exe", localizo uma pasta "PLATLIB \ processing" que copio para um caminho virtualenv e uso sem problemas de tempo de execução. (Não tenho certeza se é sempre assim tão simples.)fonte