Versão incorreta do Python retornada, com o conjunto correto de $ PATH no ZSH

0

algo muito errado está acontecendo com o meu ambiente configurado. Como estou tentando aprender, decidi reinstalar o Mac OSX El Capitan no meu Macbook Pro e começar a instalar e configurar as coisas do zero. O shell que estou usando é o ZSH e configurei um pouco com o Oh-My-ZShell.

Meus $ 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 em /usr/bin e um Homebrewed Python3 em /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!

    
por Alex Starbuck 13.04.2018 / 12:44

1 resposta

0

Apenas os binários nomeados exatamente python serão considerados quando você digitar python no prompt do shell.

Se você quiser que python execute python3 , a maneira simples de realizar isso é definir uma função ou um alias em seus arquivos de inicialização do shell pessoal.

Você absolutamente não deve fazer python apontar para python3 em todo o sistema porque isso quebrará algumas ferramentas de SO e de terceiros que exigem python para ser Python versão 2. Os dois são idiomas incompatíveis entre si (ou dialetos, se você preferir).

Para revisar o que está acontecendo aqui, quando você digita command no prompt, o shell percorre os diretórios no PATH e procura por um arquivo executável chamado exatamente command em cada, até encontrar um ou fica sem lugares para procurar. Ele simplesmente ignorará todos os arquivos com outros nomes, mesmo se forem semelhantes, como xcommand ou commandante ou command3.xx . Se você tiver um alias ou uma função, isso será usado, embora seu PATH talvez seja consultado para localizar outros comandos chamados pelo seu alias ou função.

    
por 13.04.2018 / 14:41