Alterar a versão padrão do Python3 no Ubuntu

73

Estou usando o Ubuntu 16.04 LTS. Eu python3instalei. Existem duas versões instaladas python 3.4.3e python 3.6. Sempre que eu uso o python3comando, é necessário python 3.4.3por padrão. Eu quero usar python 3.6com python3.

python3 --version mostra version 3.4.3

Estou instalando os ansiblesuportes version > 3.5. Então, sempre que eu digito ansible no terminal, gera erro por causa depython 3.4

codeclue
fonte
Qual é o comando usado para executar o python 3.6?
O comando é: - python3.6
codeclue
3
O que você sudo update-alternatives --config python3diz?
Mikael Kjær
11
update-alternative: error: nenhuma alternativa para python3
codeclue
Veja meu comentário na resposta abaixo sobre como usar o ansible com uma versão específica do python3. Você também pode considerar remover o python 3.4.
Mikael Kjær

Respostas:

99

Do comentário:

sudo update-alternatives --config python

Irá mostrar um erro:

update-alternatives: error: no alternatives for python3 

Você precisa atualizar o seu update-alternatives, então poderá definir sua versão python padrão.

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

Então corra :

sudo update-alternatives --config python

Defina python3.6 como padrão.

Ou use o seguinte comando para definir python3.6 como padrão:

sudo update-alternatives  --set python /usr/bin/python3.6
GAD3R
fonte
11
Esta resposta provavelmente será interrompida apt. Depois de selecionar uma versão diferente do python, tente executar sudo apt update. Se ele lhe dá um erro como ModuleNotFoundError: No module named 'apt_pkg'você quer ir para /usr/lib/python3/dist-packagese criar o link simbólico: ln -s apt_pkg.cpython-{34m,36m}-x86_64-linux-gnu.so.
Giacomo Alzetta
Isso me dá um erro: $ sudo update-alternatives --set python /usr/bin/python3.6 update-alternatives: error: no alternatives for pythonAlguma sugestão?
Slava Fomin II
11
@ GAD3R Obrigado. Eu consegui criar um link simbólico manualmente para apontar para o Python 3.6. Além disso, não tenho o 3.7 instalado.
Slava Fomin II
O python3argumento de que python3.8esse método quebrou gnome-terminalpara mim.
Boris
10

Você pode conseguir isso aplicando as etapas simples abaixo -

  1. Verifique a versão python no terminal - python --version
  2. Obtenha privilégios de usuário root. No tipo de terminal -sudo su
  3. Anote a senha do usuário root
  4. Execute este comando para alternar para python 3.6 -
    update-alternatives --install /usr/bin/python python /usr/bin/python3 1
  5. Verifique a versão python - python --version
  6. Feito.
Vineet Jain
fonte
11
Funciona, é simples de ler e não usa alias. +1
Carlos Pinzón
Funciona bem no Ubuntu 18.04. tão simples que outras soluções. muito obrigado
Mohammad Heydari
7

A utilização destes comandos pode ajudá-lo:

  1. verifique a versão do python: ls /usr/bin/python*
  2. alias: alias python='/usr/bin/pythonxx'
  3. re-login: . ~/.bashrc
  4. verifique a versão python novamente: python --version
Newt
fonte
obrigado, mas depois de reiniciar o computador, o python principal ainda seria o ex python 2.7
Mohammad Heydari
7

Crie um link simbólico para / usr / bin / python3. No meu LinuxMint:

# ls -lh /usr/bin/python3 /usr/bin/python
lrwxrwxrwx 1 root root 9 ноя 24  2017 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root 9 сен  6  2017 /usr/bin/python3 -> python3.5

# mv /usr/bin/python
# cp /usr/bin/python3 /usr/bin/python
# python --version
Python 3.5.2
nabi sheyhov
fonte
3

Uma resposta fácil seria adicionar um alias para python3.6.

Basta adicionar esta linha no arquivo ~ / .bashrc:, alias python3="python3.6"depois feche o seu terminal e abra um novo. Agora, quando você digita python3 xxx, é traduzido para python3.6 xxx.

Esta solução corrige seu problema sem precisar ajustar muito o sistema.

EDIT:

Como Mikael Kjær apontou, esta é uma configuração incorreta do ansible com seu sistema.

Como visto aqui:

Defina a ansible_python_interpreteropção de configuração para / usr / bin / python3. A opção de configuração ansible_python_interpreter é geralmente definida por host como uma variável de inventário associada a um host ou grupo de hosts:

  # Example inventory that makes an alias for localhost that uses python3
  [py3-hosts]
  localhost-py3 ansible_host=localhost ansible_connection=local

  [py3-hosts:vars]
  ansible_python_interpreter=/usr/bin/python3

Como visto aqui sobre o arquivo de configuração:

As alterações podem ser feitas e usadas em um arquivo de configuração que será processado na seguinte ordem:

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg

fonte
Na verdade, estou instalando o ansible, que suporta apenas> python 3.5
codeclue
11
Você pode definir a ansible_python_interpretervariável para usar seu python3.6. docs.ansible.com/ansible/latest/python_3_support.html
Mikael Kjær
@ MikaelKjær Acabei de adicionar seu comentário à minha resposta
2

se você tiver várias versões do python no seu sistema. Você só precisa atualizar o link simbólico do python dentro/usr/bin/

root@irshad:/usr/bin# ls -lrth python*
lrwxrwxrwx 1 root root    9 Apr 16  2018 python -> python2.7
-rwxr-xr-x 1 root root 3.6M Nov 12  2018 python2.7
-rwxr-xr-x 2 root root 4.4M May  7 14:58 python3.6

No exemplo acima, se você ver a saída python --version, receberá python2.7

Agora atualize o symlink do python usando os comandos abaixo

root@irshad:/usr/bin# unlink python
root@irshad:/usr/bin# ln -s /usr/bin/python3.6 python
root@irshad:/usr/bin# python --version
Python 3.6.8
IRSHAD
fonte
0

O update-alternative é alterar os links simbólicos do sistema para links simbólicos definidos pelo usuário / definidos pelo administrador. Se você possui várias versões do python3 instaladas no seu sistema e deseja controlar qual versão do python3 chamar quando python3 for chamado. Faça o seguinte

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.4 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2

Execute o comando abaixo se desejar alterar a prioridade no futuro.

update-alternatives --config python3

Explicação:-

sudo update-alternatives --install <symlink_origin> <name_of_config> <symlink_destination> <priority>

Você pode alterar o nome_do_config para python4, mas depois precisa chamar update-alternative --config com python4 para reconfigurar.

Usando essa abordagem, você pode controlar a versão do sistema python e a versão python3 separadamente.

wittyurchin
fonte
0

a primeira verificação você pasta python3.6

ls /usr/bin/python3.6

se você tem uma pasta como python3.6 bom para ir

então atualizar-alternativas

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1

agora atualize nova configuração para python3

sudo update-alternatives --config python3

verifique a versão do python

python3 --version

mmblack
fonte
0

Você pode alterar o link simbólico por ln -sf python3.6 python3dentro /usr/bin. Com isso quando você ligar, python3ele executarápython3.6

SPAWN35
fonte