como alterar a versão padrão do python?

106

Eu instalei o python 3.2 no meu mac. Depois de executar / Applications / Python 3.2 / Update Shell Profile.command , é confuso que quando eu digito python -V no Terminal diz que Python 2.6.1 , como posso alterar a versão padrão do python?

Zhu Shengqi
fonte
Relacionado: stackoverflow.com/a/18425592/939986
Santosh Kumar
Consulte opensource.com/article/19/5/python-3-default-mac para uma boa solução usando pyenv.
Thomas Ahle

Respostas:

115

Isso é provavelmente desejável para compatibilidade com versões anteriores.

Python3 quebra a compatibilidade com versões anteriores, e os programas que invocam 'python' provavelmente esperam o python2. Você provavelmente tem muitos programas e scripts dos quais nem mesmo está ciente, mas que esperam python = python2, e alterar isso quebraria esses programas e scripts.

A resposta que você provavelmente está procurando é: Você não deve alterar isso .

Você pode, no entanto, criar um alias personalizado em seu shell. A maneira como você faz isso depende do shell, mas talvez você pudesse fazeralias py=python3

Se você está confuso sobre como iniciar a versão mais recente do python, é pelo menos o caso do Linux que python3deixa sua python2instalação intacta (devido aos motivos de compatibilidade acima) ; portanto, você pode iniciar o python3 com o python3comando.

ninjagecko
fonte
36
Esta é uma informação útil, mas a questão era "como posso alterar a versão padrão do Python." Podemos acrescentar algo para ajudar as pessoas que estão tentando fazer isso?
dmeyerson
No Mac, a instalação do Python3 deixa o Python2 intacto também. Mas parece-me que existe uma maneira de alterar o padrão que é executado quando apenas "python" é digitado. Eu me deparei com a opção uma vez. Optei por deixar como está onde "python - versão" mostra 2.7.12 e "python3 - versão" mostra 3.7.0. Eu concordo com dmeyerson acima que a questão é como mudar isso. Seu conselho é bom, mas há uma maneira de mudá-lo se você precisar (ou realmente quiser).
Rich Sadowsky de
3
> A resposta que você provavelmente está procurando é: Você não deve mudar isso. E aqui eu pensei que era "como faço para mudar isso"!
duane
2
Esta resposta está correta. Não altere o que pythonaponta no nível do sistema, pois você pode quebrar componentes importantes do seu sistema operacional se o fizer . Em vez disso, use uma instalação separada do Python 3 e virtualen para obter um Python padrão “local”.
Martijn Pieters
50

Verifique a localização do python 3

$ which python3
/usr/local/bin/python3

Escreva o alias em bash_profile

vi ~/.bash_profile  
alias python='/usr/local/bin/python3'

Recarregar bash_profile

source ~/.bash_profile

Confirme o comando python

$ python --version
Python 3.6.5
Ryosuke Hujisawa
fonte
2
esta é uma solução ruim. Conforme mencionado na resposta aceita, $ pythoné reservado para python 2. Qualquer programa que você execute em seu computador e que espere python 2 receberia python 3 devido ao alias, o que poderia ter consequências negativas imprevistas.
Shonin
As intenções da Apple são irrelevantes para a questão.
duane
45

No Mac OS X usando o instalador python.org como você aparentemente fez, você precisa invocar o Python 3 com python3, não python. Isso está atualmente reservado para as versões Python 2. Você também pode usar python3.2para invocar especificamente essa versão.

$ which python
/usr/bin/python
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ cd /Library/Frameworks/Python.framework/Versions/3.2/bin/
$ ls -l
total 384
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 2to3@ -> 2to3-3.2
-rwxrwxr-x  1 root  admin    140 Feb 20 11:14 2to3-3.2*
lrwxr-xr-x  1 root  admin      7 Apr 28 15:51 idle3@ -> idle3.2
-rwxrwxr-x  1 root  admin    138 Feb 20 11:14 idle3.2*
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 pydoc3@ -> pydoc3.2
-rwxrwxr-x  1 root  admin    123 Feb 20 11:14 pydoc3.2*
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3*
lrwxr-xr-x  1 root  admin     12 Apr 28 15:51 python3-32@ -> python3.2-32
lrwxr-xr-x  1 root  admin     16 Apr 28 15:51 python3-config@ -> python3.2-config
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 python3.2-32*
lrwxr-xr-x  1 root  admin     17 Apr 28 15:51 python3.2-config@ -> python3.2m-config
-rwxrwxr-x  1 root  admin  25784 Feb 20 11:14 python3.2m*
-rwxrwxr-x  1 root  admin   1865 Feb 20 11:14 python3.2m-config*
lrwxr-xr-x  1 root  admin     10 Apr 28 15:51 pythonw3@ -> pythonw3.2
lrwxr-xr-x  1 root  admin     13 Apr 28 15:51 pythonw3-32@ -> pythonw3.2-32
-rwxrwxr-x  1 root  admin  25624 Feb 20 11:14 pythonw3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 pythonw3.2-32*

Se você também instalou um Python 2 de python.org, ele teria um diretório bin de estrutura semelhante, sem nomes de arquivo sobrepostos (exceto para 2to3).

$ open /Applications/Python\ 2.7/Update\ Shell\ Profile.command
$ sh -l
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ cd /Library/Frameworks/Python.framework/Versions/2.7/bin
$ ls -l
total 288
-rwxrwxr-x  1 root  admin    150 Jul  3  2010 2to3*
lrwxr-x---  1 root  admin      7 Nov  8 23:14 idle@ -> idle2.7
-rwxrwxr-x  1 root  admin    138 Jul  3  2010 idle2.7*
lrwxr-x---  1 root  admin      8 Nov  8 23:14 pydoc@ -> pydoc2.7
-rwxrwxr-x  1 root  admin    123 Jul  3  2010 pydoc2.7*
lrwxr-x---  1 root  admin      9 Nov  8 23:14 python@ -> python2.7
lrwxr-x---  1 root  admin     16 Nov  8 23:14 python-config@ -> python2.7-config
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 python2.7*
-rwxrwxr-x  1 root  admin   1663 Jul  3  2010 python2.7-config*
lrwxr-x---  1 root  admin     10 Nov  8 23:14 pythonw@ -> pythonw2.7
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 pythonw2.7*
lrwxr-x---  1 root  admin     11 Nov  8 23:14 smtpd.py@ -> smtpd2.7.py
-rwxrwxr-x  1 root  admin  18272 Jul  3  2010 smtpd2.7.py*
Ned Deily
fonte
Em relação a "atualmente reservado para versões do Python 2", você tem um link para isso?
Wildcard
Se eu tiver o python 3.4 e o python 3.7, quando digito python3 no terminal, ele executa o python 3.4, não o 3.7, como corrigir isso?
Ysh de
31

Pergunta antiga, mas alternativamente:

virtualenv --python=python3.5 .venv
source .venv/bin/activate
FreshPow
fonte
claro, mas se você não tiver o executável (por exemplo, python3.5), esta solução não funciona.
Afshin Mehrabani
Acho que isso cobre stackoverflow.com/questions/5506110/…
FreshPow
19

Faça a coisa certa, faça a coisa certa!

---> Zero Abra seu terminal,

--Introduza primeiro python -V, provavelmente mostra:

Python 2.7.10

-Segunda entrada python3 -V, provavelmente mostra:

Python 3.7.2

--Introduza em terceiro lugar where pythonou which python, provavelmente mostra:

/usr/bin/python

--- Em quarto lugar , where python3ou which python3, provavelmente mostra:

/usr/local/bin/python3

- Em quinto lugar, adicione a seguinte linha na parte inferior do seu arquivo de variável de ambiente PATH em ~/.profile file or ~/.bash_profileBash ou ~/.zshrcem zsh.

alias python='/usr/local/bin/python3'

OU

alias python=python3

- Entrada source ~/.bash_profileem sexto lugar em Bash ou source ~/.zshrcem zsh.

- Em sétimo lugar Saia do terminal.

--- Oitavo Abra seu terminal e insira python -V, provavelmente mostra:

Python 3.7.2

Eu tinha tentado com sucesso.

Outros, o ~/.bash_profilesob zsh não é isso ~/.bash_profile.

A variável de ambiente PATH em zsh ao invés ~/.profile(ou ~/.bash_file) via ~/.zshrc.

Ajude vocês!

McAllister Bowman
fonte
16

Altere o Python "padrão" colocando-o à frente do Python do sistema em seu caminho, por exemplo:

export PATH=/usr/local/bin:$PATH
Adam Vandenberg
fonte
Minha suposição é que, ao fazer isso, você pode quebrar algo no Mac. Uma vez que existem muitos programas e scripts que usam o alias "python". Se de repente, por causa da mudança de prioridade no PATH, eles começarem a apontar para Python3 e não para Python2 - isso pode quebrar algo. Potencialmente, todo o sistema operacional ... essa é minha suposição e não foi testado.
Aivoric
3
Qualquer software de sistema estaria usando o caminho completo para o sistema fornecido em Python.
Adam Vandenberg
2

De acordo com uma rápida pesquisa no Google, esta atualização se aplica apenas ao shell atual que você abriu. Provavelmente, ele pode ser corrigido digitando python3, pois mac e linux são semelhantes o suficiente para que coisas assim coincidam. Link para o resultado da pesquisa do Google.

Além disso, como afirma o ninjagecko, a maioria dos programas não foi atualizada para 3.x ainda, então ter o python padrão como 3.x quebraria muitos scripts python usados ​​em aplicativos.

Matt Habel
fonte
2

Estou usando o OS X 10.7.5 e Python 3.4.2. Se você digitar python3e o que deseja executar, ele o executará usando o python 3. Por exemplo pyhton3 test001.py. Isso rodou um programa de teste que fiz chamado test001. Eu espero que isso ajude.

ITGM
fonte
5
Bem-vindo ao Stack Overflow! Parece que sua resposta não é uma resposta real para a pergunta feita. Consulte stackoverflow.com/help/how-to-answer para obter ajuda se desejar consertar.
Outros
Passei HORAS tentando fazer o python3 funcionar no meu Mac - descobri que digitar 'python3' em vez do antigo 'python' resolveu o problema.
YCode
1

Navegar para:

Meu computador -> Propriedades -> Avançado -> Variáveis ​​de ambiente -> Variáveis ​​do sistema

Suponha que você já tenha adicionado o python 2.7 na variável de caminho e deseja alterar o caminho padrão para o python 3.x

em seguida, adicione o caminho da pasta python3.5.x antes do caminho python2.7.

cmd aberto: digite "python --version"

a versão do python será alterada para python 3.5.x

Ankit Agrawal
fonte
3
Isso é o Windows.
Charles Ross
Alguns IDEs que incluem terminais / cmds / consoles propagam as variáveis ​​de ambiente. Reinicie o IDE para obter as alterações dentro do terminal embedd.
UselesssCat
0
sudo mv /usr/bin/python /usr/bin/python2
sudo ln -s $(which python3) /usr/bin/python

Isso interromperá os scripts, mas é exatamente a maneira de alterar o Python. Você também deve reescrever os scripts para não assumir que pythonseja 2.x. Isso funcionará independentemente do lugar para onde você ligar systemou exec.

Duane
fonte
0

Resumindo: mude o caminho nas Variáveis ​​de Ambiente!

Para Windows:

  • Avançado System Settings > Advance (tab). Na parte inferior você encontrará'Environment Variables'

  • Clique duas vezes em Path. Você verá o caminho para uma das instalações do python, mude para o caminho da versão desejada.

amalik2205
fonte
0

Verifique o caminho de execução de python3 onde há bibliotecas

$ which python3
/usr/local/bin/python3  some OS might have /usr/bin/python3

abra o arquivo bash_profile e adicione um alias

vi ~/.bash_profile  
alias python='/usr/local/bin/python3' or alias python='/usr/bin/python3'

Recarregue o bash_profile para ter efeito sobre as modificações

source ~/.bash_profile

Execute o comando python e verifique se ele está carregando com python3

$ python --version
Python 3.6.5
Javeed Shakeel
fonte