Atualizando o Python no sistema Ubuntu

78

Quero atualizar a compilação Python no meu Linux, mas a única maneira de saber como desinstalar a versão atual e instalar a nova. Meu sistema já está atualizado (atualizei ontem). Eu queria saber se existe uma maneira de atualizar um programa específico a partir da linha de comando, como sudo apt-get update <program-name>. Eu sei que esse comando não existe, mas espero que algo equivalente exista.

effectiveIsBliss
fonte
Se o seu sistema estiver atualizado, o Python também estará no seu sistema (de acordo com seus repositórios). Estou errado?
Cyrus

Respostas:

64

Como outros já observaram, o bare sudo apt-get install packageinstalará a versão mais recente disponível, substituindo a versão mais antiga, se necessário.

Mas com alguns softwares (entre os quais o Python), a situação é um pouco diferente. Algumas versões principais, muito e incompatíveis, obtêm seus próprios pacotes. Por exemplo, Python 2.6 , Python 2.7 , Python 3.1 todos vivem em pacotes separados no Ubuntu.

De particular importância é o fato de que uma das políticas do Ubuntu é usar extensivamente o Python para escrever software de usuário final. Portanto, de fato, uma parte bastante grande do sistema é escrita em Python. No momento, o código é executado no Python 2.6 - portanto, esta versão é o padrão na instalação; e o código não será executado facilmente, digamos, no Python 2.7 - porque existem incompatibilidades. Para mudar o sistema para o Python 2.7, é necessário fazer um trabalho, que consiste em atualizar e testar novamente todos os scripts. Isso não pode ser feito facilmente; ou seja, você não pode simplesmente "alternar" seu sistema para Python 2.7 e excluir a versão mais antiga.

Mas. Se você não se importa com as engrenagens sofisticadas do seu sistema e só precisa de um Python mais novo - não veja obstáculos. Vá e sudo apt-get install python3codifique bravamente o 3.x Python; lembre-se de iniciar seus scripts python3e usar a #!/usr/bin/env python3linha shebang.

ulidtko
fonte
6
Grandes detalhes sobre o funcionamento dos bastidores.
efficiencyIsBliss
16
sudo apt-get install python 3.3.3

isto é para python (3.3.3) para versões diferentes, o número da versão correspondente deve ser usado.

Mrinal
fonte
4
Eu acho que o espaço entre python e versão não deveria estar lá. sudo apt-get install python3.6funcionou para mim, mas não afeta o Python 3.5 de forma alguma.
GUI Junkie
sudo apt-get install python 3.6.1 > Note, selecting 'libghc-unix-time-dev-0.3.6-1b8cf' for regex '3.6.1' ... Argumentos separados dizer apt para instalar vários pacotes
Clancy capa
3
Depois de instalar o número da minha versão python é o mesmo? Qual seria a razão?
Ramsh Pareek
Eu usei esse método, mas não consigo encontrar onde ele foi instalado (por exemplo, como abrir um shell 3.7). @RameshPareek, esse também pode ter sido o seu problema. parece não estar em / usr / bin. python is already the newest version (2.7.12-1~16.04). python set to manually installed.alguma ideia?
Bjorks fã número um
10
sudo apt-get install python3.6

Isso instala o python 3 no linux ao lado do python 2. Para acessar o python 3, digite depois que você abrir o terminal.

python3
G-Ox7cd
fonte
2
Isso duplica outra resposta e não adiciona novo conteúdo. Não poste uma resposta, a menos que você realmente tenha algo novo para contribuir.
DavidPostill
3
desculpe, eu só queria escrever o comando para obter o novo.
G-Ox7cd
6
Se eu correr que eu receboE: Unable to locate package python3.6 E: Couldn't find any package by glob 'python3.6' E: Couldn't find any package by regex 'python3.6'
Kajsa
11
sudo add-apt-repository ppa: deadsnakes / ppa -y && sudo apt-get update
ski_squaw
E: Unable to locate package python3.6
Dims
4

Você está próximo de pensar em um comando como sudo apt-get update(que é um comando real, mas não faz o que você deseja).

Para atualizar o Python e tudo o mais que você instalou, basta executar o comando:

sudo apt-get upgrade
Wuffers
fonte
Obrigado, mas eu já sabia sobre o comando update, e foi por isso que publiquei o fato de que meu sistema já está atualizado. Eu esperava encontrar um comando que pudesse ser direcionado para aplicativos específicos.
efficiencyIsBliss
apt não atualizar qualquer coisa até à data, por isso não faria diferença; p
Journeyman Geek
O OP quer atualizar o python especificamente . Dizer a eles para atualizar todos os pacotes que eles têm é um conselho preguiçoso e ruim.
Przemek D
3

No site irmão: https://askubuntu.com/questions/44122/how-to-upgrade-a-single-package-using-apt-get

Cada um desses comandos é atualizado por instalação, o que deve funcionar bem em muitos casos, mas pode não ser o que você está procurando em um caso específico.

Se você deseja atualizar apenas um pacote específico E somente se ele já estiver instalado, use o comando:

sudo apt-get install --only-upgrade packagename
music2myear
fonte
3

Caso você esteja procurando atualizar apenas uma versão menor do pacote python como 2.7.11+ t0 2.7.12, faça o que sudo apt-get install python2.7deve fazer por você

Senthil Kumar Vaithiyanathan
fonte
2

pyenv pode ser uma boa opção para você: https://github.com/yyuu/pyenv


Em relação à resposta do @ ulidtko , uma alternativa possível para substituir completamente o python do sistema pode ser usar um ambiente isolado com a versão desejada do python. Isso é semelhante a um "ambiente virtual", mas para o próprio python. Eu usei isso no passado para projetos legados executados no python 2.6, bem como ao atualizar da versão legada do python para o python3.

nicefinly
fonte
Não estou familiarizado com a área, mas você poderia explicar como isso resolve a questão e resolve o problema?
Ben N
11
Em relação à resposta de @ ulidtko ( superuser.com/a/241903/152143 ), uma alternativa possível para substituir completamente o python do sistema pode ser usar um ambiente isolado com a versão desejada do python. Isso é semelhante a um "ambiente virtual", mas para o próprio python. Eu usei isso no passado para projetos legados executados no python 2.6, bem como ao atualizar da versão legada do python para o python3.
21416 Nicelylyly
1
apt-get install python

Eu acredito que isso deve funcionar. Você precisará alterar 'python' para corresponder ao nome do pacote apropriado no seu repositório, obviamente.

mbreedlove
fonte
1

Como todos sabemos, o Python vem com a versão 3.5. Portanto, é muito simples atualizar o Python 2.7 (que por padrão está presente no Ubuntu 16.04) para o Python 3.5.

Siga os seguintes passos:

  1. Terminal aberto.
  2. Torne-se usuário root usando o comando sudo.
  3. Use o código abaixo para atualizar o Python 2.7 para 3.5

    sudo apt-get install python3.5

  4. Você receberá sua permissão e, em seguida, dê a opção Y.

  5. Aguarde até concluir o processo.
  6. limpe a tela usando o comando clear
  7. Verifique a versão do python abaixo do comando.

    python -version

Big Data Guy
fonte
11
Use a formatação adequada no futuro e fique longe de declarações como "Espero que isso ajude você". eles são apenas barulho. Ao responder à pergunta, presume-se, sua tentativa de responder à pergunta com algo útil. Você deve seguir sua resposta e corrigir os pequenos erros gramaticais que não corrigi e fornecer capturas de tela do processo. Corrigi a formatação para você neste momento, não voltarei a fazê-lo, acredito firmemente que os autores devem manter suas próprias respostas e perguntas.
Ramhound 4/11
E não é tão simples, isso não atualiza os links simbólicos corretamente, então você termina com 3,4 e 3,5 lado a lado. O Python2 geralmente está lado a lado com o python3 de qualquer maneira, não atualizamos o Python2 para o Python3, migramos o nosso trabalho.
mckenzm
0

No caso único de você estar executando uma versão LTS, seu python pode estar atrasado em uma versão secundária, digamos 2.7.5 em vez de 2.7.10.

Uma possibilidade seria atualizar o sistema :

  • definir prompt=normalem/etc/update-manager/release-upgrades
  • atualizar o sistema
    • na linha de comando, você pode digitar sudo do-release-upgradepara que o gerenciador de atualização faça seu trabalho para atualizar para a versão mais recente (= não LTS).
    • a solução da GUI usa o Update Manager

Como sempre, ao atualizar, dê uma olhada nas notas de versão , pois a atualização pode danificar seu sistema em alguns casos, consulte o comentário do @ Gino .

serv-inc
fonte
Cara, eu tentei sua alteração e ela quebrou meu sistema Ubuntu 14.04! Basicamente, ele tentou atualizar do 14.04 para o Ubuntu 15 e não foi capaz de fazê-lo com sucesso, deixando meu sistema no meio do estado em que o logon gráfico não funcionava mais - por exemplo, eu logaria através do logon gráfico e ele chutaria eu volto para o mesmo login gráfico. Passei a última hora + reinstalando o Ubuntu 14.04 na minha máquina para corrigir a falha na sua solução .
Gino
@ Gino: Obrigado pelo feedback. Você já deu uma olhada em askubuntu.com/questions/612973/… , askubuntu.com/questions/223501/… e nas notas de versão? Há um problema com o "driver fglrx da AMD". Gostaria de outra ajuda?
serv-inc
Eu acho que sua sugestão, para contornar as verificações de segurança normais, permitindo que uma atualização para uma versão não LTS seja repleta de perigos. Até hoje, não sei por que a atualização falhou, porque não mostrou nenhuma mensagem de erro diagnosticável. Em vez disso, acabei com um sistema que não era mais utilizável. Se bem me lembro, acabei executando novamente a instalação do Ubuntu com determinadas configurações que foram capazes de restaurar a maior parte do meu sistema. E, como observação lateral, sou um programador profissional, por isso geralmente conheço o meu caminho em torno de um sistema Linux.
Gino
@ Gino: Este parece ser o procedimento padrão para mudar de LTS para não LTS. Isso muda o nível de conscientização dos novos lançamentos. Pode-se definir isso para lançamentos "suportados" (regulares), "lançamentos apenas para longo prazo" (LTS) ou até "nada" (sem grandes atualizações). "'Para a citação, consulte askubuntu.com/questions/240160/… . Ele usa o gerenciador de atualizações do sistema.Infelizmente, no seu caso, a atualização (padrão) não funcionou, o que pode dever-se a um driver gráfico de buggy (veja os links acima).
serv-inc