pip não funciona no hombrew python 2.7 install

15

Instalei o python usando o homebrew e não consigo chamar o pip a partir do bash. Eu tentei alterar meu .bash_profile para incluir / usr / local / bin / python e / usr local / share / python sem sucesso.

Quando eu uso o comando bash:

find / -name 'pip'

Os únicos resultados que recebo são:

/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip
/Users/Ivan/Library/Caches/pip
/Users/Ivan/Library/Logs/pip
/usr/local/Cellar/python/2.7.9/libexec/pip
/usr/local/Cellar/python/2.7.9/libexec/pip/pip
/usr/local/lib/python2.7/site-packages/pip

Nenhum dos quais é um executável.

Realmente não sei onde apontar meu $ PATH, pois não consigo encontrar o executável do pip. Quando abro

/usr/local/lib/python2.7/site-packages/pip

ou

/usr/local/Cellar/python/2.7.9/libexec/pip/pip

Eu encontro os seguintes arquivos:

__init__.py         commands            operations
__init__.pyc        compat              pep425tags.py
__main__.py         download.py         pep425tags.pyc
__main__.pyc        download.pyc        req
_vendor             exceptions.py       status_codes.py
basecommand.py      exceptions.pyc      status_codes.pyc
basecommand.pyc     index.py            utils
baseparser.py       index.pyc           vcs
baseparser.pyc      locations.py        wheel.py
cmdoptions.py       locations.pyc       wheel.pyc
cmdoptions.pyc      models

Nenhum dos quais é um executável.

Agradeço a ajuda de qualquer pessoa com mais experiência do que eu.

Edit: Eu tentei as etapas sugeridas por Marco:

Aqui estão os resultados para as etapas:

  1. echo $ PATH mostra alguns diretórios: / usr / local / bin: / usr / local / mysql / bin: / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / texbin: / opt / X11 / bin: / usr / local / mysql / bin

  2. qual -a python retorna: / usr / local / bin / python / usr / local / bin / python

nada é retornado para o qual -a pip

  1. qual python retorna: / usr / local / bin / python

nada é retornado para o qual pip

  1. ls -l $ (que python) retorna um único diretório: lrwxr-xr-x 1 Ivan admin 33 17 de maio, 08:59 / usr / local / bin / python -> ../Cellar/python/2.7.9/bin/ Pitão

ls -l $ (qual pip) retorna vários, incluindo os arquivos python que eu mostrei na minha postagem original

YoungPadawan
fonte

Respostas:

19

Geralmente, homebrewinstala um formulano /usr/local/Cellar/formulae depois coloca um link em /usr/local/bin/formula.

Para fazer uso das fórmulas instaladas, verifique se /usr/local/binestá no seu $PATH. Mostre o seu $PATHdigitando

echo $PATH

Se /usr/local/binnão estiver no seu $PATH, coloque esta linha no final do seu ~/.profilearquivo.

export PATH="/usr/local/bin:$PATH"

Agora, verifique o que pythonsé encontrado no seu OSX digitando:

which -a python

Deve haver um python encontrado em /usr/bin/(o python da Apple) e outro no /usr/local/bin/qual é o python Homebrew.

which python

mostrará a você qual python é encontrado primeiro no seu $PATH e será executado quando você chamar python.

Se você quiser saber onde está o executável, mostre-o digitando

ls -l $(which python)

Pode ser assim: lrwxr-xr-x 1 root root 68 7 de maio 13:22 python -> / usr / local / bin / python

Isso também funcionará pip.

Se você mostrar os resultados dessas etapas, provavelmente podemos ajudá-lo com muito mais facilidade.

- ATUALIZAÇÃO -

Você está /usr/local/bin/pythonvinculado a /usr/local/Cellar/python/2.7.9/bin/python. -> brew install pythonfuncionou.

show, se pipestiver instalado, digitando

brew list python | grep pip

Você deveria ver

/usr/local/Cellar/python/2.7.9/bin/pip

Caso contrário, verifique se há links que ainda não foram concluídos brew install. Disse algo assim:

"Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local"

Para forçar o link e substituir todos os arquivos conflitantes:

brew link --overwrite python

Para listar todos os arquivos que seriam excluídos:

brew link --overwrite --dry-run python

** NO Apple padrão /usr/bin/python**

link de /usr/local/Cellar/python/2.7.9/bin/pythonpara/usr/bin/python

ln -s /usr/local/Cellar/python/2.7.9/bin/python /usr/bin/python

Isso é necessário para todos os scripts python iniciados com #!/usr/bin/python. Especialmente easy_installfalhará, se o link não estiver lá.

Agora você pode executar

easy_install pip

Espero que você esteja progredindo

Marco M. von Hagen
fonte
Marco, obrigado pela sua resposta! Por favor, veja a minha pergunta original para os resultados para os passos - eu adicionei-los em
YoungPadawan
@YoungPadawan parece que você não tem o padrão da Apple /usr/bin/python. Isso não é bom, porque muitos scripts Python começam com #!/usr/bin/python. Se não houver python, você receberá mensagens de erro como a sua. Use brew link --dry-run pythonpara verificar o que será alterado nos seus links ao usar brew link --overwrite python. Vamos obter o seu pip running ;-)
Marco M. von Hagen
use brew link --overwrite --dry-run pythonpara ver quais arquivos serão substituídos.
Marco M. von Hagen
1
Marquei sua resposta porque ela me levou ao caminho certo, mas no final foi uma questão de permissão. Após a instalação, recebi um Warning: The post-install step did not complete successfully You can try again using brew postinstall python. I tried the comando brew postinstall python` e me levou a alguns arquivos aos quais não tinha acesso aos quais eu cansei. Agora eu posso usar pip! Obrigado novamente
YoungPadawan
1
No meu caso, o problema foi The post-install step did not complete successfullydevido error: could not delete '/usr/local/lib/python2.7/site-packages/pip/__init__.py': Permission denied. A exclusão manual desse arquivo e a execução brew postinstall pythonnovamente o corrigiram.
David Pursehouse
5

Se o brew estiver gerenciando sua instalação python e o pip não estiver mais vinculado (por exemplo, você digita "qual pip" e não obtém resultados), tente isso no diretório inicial:

brew unlink python && brew link python

Não tenho certeza se o método antigo funciona mais (não funcionou na minha máquina).

Agora confirme se ele realmente aponta para a sua instalação 2.7 com pip --version(ele listará a versão principal do python na saída do diretório).

GrayedFox
fonte
4

Não é realmente uma resposta para a pergunta original, mas se alguém acabar aqui porque o Homebrew-instalado python/pipnão está mais funcionando (ou seja, pythonaponta para o python do sistema e pipnão foi encontrado), o motivo pode ser uma alteração recente (verão de 2017) no O Homebrew instala e vincula o python.

A solução é adicionar o seguinte a ~/.bash_profilee / ou ~/.zshrc:

export PATH="$(brew --prefix)/opt/python/libexec/bin:$PATH"

Isso fará pythonparte da versão brew do python e também fornecerá a você pip. Veja a advertências seção sob brew info pythone https://github.com/Homebrew/homebrew-core/issues/15746 para mais informações

bjorgvin
fonte
2

Por padrão Homebrew fornece pip via: brew install python. No entanto, você terá dois Pythons instalados no seu Mac. Em alternativa, você pode instalá-lo via:

sudo easy_install pip

Para verificar quais arquivos estão instalados com o seu pacote Python, tente:

$ brew list python
/usr/local/Cellar/python/2.7.9/bin/pip
/usr/local/Cellar/python/2.7.9/bin/pip2
/usr/local/Cellar/python/2.7.9/bin/pip2.7
...

qual deve consistir pip.

Após a instalação, você deve desvincular os arquivos instalados da sua fórmula:

brew link python

que deve criar os links simbólicos certos (como /usr/local/bin/pipapontar para o seu Cellar/python/2.?.?/bin/pip)

Se você tiver um problema de permissão, poderá corrigi-lo:

sudo chgrp -R admin /usr/local /Library/Caches/Homebrew
sudo chmod -R g+w /usr/local /Library/Caches/Homebrew

e verifique se o usuário está no grupo de administradores ( id -Gn $USER).

Depois de corrigir as permissões, não use sudoao usar o brewcomando.

Em seguida, vincule novamente:

brew unlink python && brew link python

Para testar a execução a seco, desvincule e execute: brew link -n pythonpara ver os links dos arquivos que brewseriam vinculados.

Após o êxito da vinculação, verifique se a variável de sistema PATH /usr/localinclui, se não, adicionar:

export PATH=/usr/local/sbin:/usr/local/bin:$PATH

para o seu ~/.bashrcarquivo.

Se for bem sucedido, você pipdeve trabalhar agora.

kenorb
fonte
Obrigado pela sua resposta kenorb! Parte do problema é que o easy_install também não funciona para mim. Na festa eu recebo: -bash: / usr / bin / easy_install: / usr / bin / python: mau intérprete: Nenhum tal lima ou diretório
YoungPadawan
Isso significa que você não tem /usr/bin/pythoninstalado (o que normalmente deve ser fornecido com o OS X). Portanto, tente como sugerido, que é: brew install python && brew link pythone adicione /usr/local/binao seu PATH.
Kenorb 17/05
Eu não acho que brew install python && brew link pythonestá colocando python /usr/bin. Estou vendo usr/local/bin, mas não estou vendo o link simbólico para pipar por lá. Também desvinculei e vinculei o python, e nada muda. Parece que a bebida instalar e ligação não é colocar as coisas onde deveria
YoungPadawan
@YoungPadawan brewnão faz nada com /usr/bin, mas /usr/local/bin. Tente: brew unlink pythone execute a seco: brew link -n pythonpara listar todos os arquivos que devem ser vinculados e verificar se pipexiste. Se sim, execute novamente sem -n.
Kenorb 19/05
Obrigado Kenorb, encontrei uma solução. No final, houve uma instalação defeituosa devido a permissões. Modifiquei as permissões em alguns arquivos com os quais o brew estava em conflito e executei novamente a instalação e agora tudo funciona bem. Há mais detalhes em um comentário para a pergunta acima. Mais uma vez obrigado pela sua resposta, foi realmente útil para me levar à solução.
YoungPadawan