algo muito errado está acontecendo com a configuração do meu ambiente. Enquanto estou tentando aprender, decidi reinstalar o Mac OSX El Capitan no meu Macbook Pro e começar a instalar e configurar tudo do zero. O Shell que estou usando é o ZSH e configurei-o um pouco com o Oh-My-ZShell.
Meu $PATH e Python:
~ ❯ echo $PATH
/Users/edchigliak/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/edchigliak/bin
~ ❯ python --version
Python 2.7.10
~ ❯
A captura de tela abaixo mostra claramente que há dois Python2 instalados /usr/bin
e um Homebrewed Python3 no /usr/local/bin
.
Aqui está o resultado de printenv
(apenas entradas relacionadas a PATH e SHELL):
PATH=/Users/edchigliak/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/edchigliak/bin
PWD=/Users/edchigliak
SHELL=/usr/local/bin/zsh
SHLVL=2
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.lRGo5iu4NA/Listeners
TERM=screen-256color
ZSH=/Users/edchigliak/.oh-my-zsh
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0
_=/usr/bin/printenv
Primeira entrada no meu.zshrc
:
export PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/bin
Muito obrigado!
Responder1
Somente binários com nomes exatos python
serão considerados quando você digitar python
no prompt do shell.
Se você deseja python
executar python3
, a maneira simples de fazer isso é definir uma função ou alias em seus arquivos pessoais de inicialização do shell.
Você absolutamente não deve fazer python
referência a python3
todo o sistema, porque isso quebrará alguns sistemas operacionais e ferramentas de terceiros que exigem python
a versão 2 do Python. As duas são linguagens (ou dialetos, se você preferir) mutuamente incompatíveis.
Para revisar o que está acontecendo aqui, quando você digita command
no prompt, o shell percorre os diretórios em seu PATH
e procura um arquivo executável com o nome exato command
em cada um, até encontrar um ou ficar sem lugares para procurar. Ele simplesmente ignorará quaisquer arquivos com outros nomes, mesmo que sejam semelhantes, como xcommand
ou commandante
ou command3.xx
. Se você tiver um alias ou uma função, ele será usado, embora PATH
talvez você seja consultado para localizar outros comandos chamados pelo seu alias ou função.
Responder2
O shell procura PATH porcorrespondências exatas. Quando você digita python
, ele tenta encontrar um executável correspondente ^python$
; ^python...$
Não é a mesma coisa.
No seu caso, pode não haver python em /usr/local/bin ou talvez haja um problema de permissão, o que faria com que ele fosse ignorado.
1) Se não houver python
entrada /usr/local/bin
:
Você pode usar sudo ln -s /usr/local/bin/python3.6 /usr/local/bin/python
para criar um link virtual python
apontando para o interpretador Python que deseja usar. Como /usr/local/bin é pesquisado primeiro pelo seu PATH, o shell agora deve encontrar este link.
2) Se o arquivo existir, /usr/local/bin
mas não tiverexecutarpermissão, tente sudo chmod a+x /usr/local/bin/python
.
Não consigo pensar em outros problemas agora.