Atualizei meu Ubuntu de 22.04 para 24.04 Anteriormente o python 3.10 estava sendo usado Agora a versão padrão é python3.12
- O Python 3.12 parece exigir o uso de ambiente virtual. Tenho lido alguma documentação e fóruns, mas estava pensando se seria melhor voltar para o Python 3.10.
- Você recomendaria uma atualização alternativa onde eu possa ter as duas versões?
[sudo] password for meena:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package python3.10 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'python3.10' has no installation candidate
Não, não é melhor voltar para o Python 3.10.
Ou, mais precisamente, não é melhor mudar a instalação do sistema do Python de volta para 3.10. Seu sistema é construído de uma forma que ele espera ter o Python 3.12 disponível, e se você removê-lo, várias coisas vão parar de funcionar.
Há duas mudanças que você pode e provavelmente deve fazer no seu uso do Python:
Ambientes virtuais são agora uma prática recomendada para todas as versões do Python, então você deve começar a usá-los. Existem inúmeras ferramentas que você pode usar para criar e gerenciar ambientes virtuais; por exemplo, eu particularmente recomendo o pipx para instalar aplicativos Python, ou seja, qualquer coisa que você pretenda executar, mas não usar em seu próprio código. Se você for escrever seu próprio código Python, por outro lado, considere algo como hatch (meu favorito), pdm , flit ou poetry (que é um pouco menos polido do que os outros; ele é um pouco anterior a alguns dos padrões modernos em desenvolvimento Python). Você também pode considerar o pipenv , que é uma ferramenta mais simples que apenas cria um ambiente virtual e gerencia a lista de pacotes instalados nele, sem os recursos de projeto de desenvolvimento que os outros têm.
Você também pode criar ambientes virtuais manualmente usando o
venv
módulo que é construído na biblioteca padrão do Python (python -m venv <path>
), ou virtualenv que é uma versão um pouco mais sofisticada da mesma coisa. Cada uma dessas ferramentas tem seu próprio fluxo de trabalho exclusivo, então você pode experimentá-las e ver o que gosta.Se você precisar acessar versões diferentes do Python além da 3.12, eu sugeriria instalá-las "manualmente", não usando
apt
. Talvez a maneira mais fácil de fazer isso seja com algo como pyenv , que fornece uma ferramenta bem simples que pode instalar, atualizar e desinstalar muitas versões diferentes do Python sem tocar na usada pelo seu sistema. Depois de instalar a versão que você precisa, você pode usá-la para criar ambientes virtuais, ou pode fazer com que sua ferramenta de escolha a use para criar ambientes virtuais.Existem outras ferramentas como rye e uv (agora em processo de fusão... mais ou menos?) que tentam fazer todas as coisas acima - elas permitirão que você crie e gerencie ambientes virtuais, e também permitirão que você instale e gerencie versões do Python. Sinta-se à vontade para experimentá-las se isso parecer útil.
Não altere a versão padrão do python. Isso destruirá o Ubuntu.
Em vez disso, use um ambiente virtual com o Miniforge.
Baixe o instalador 64 para Linux, conforme descrito aqui .
Agora instale-o.
Agora crie um ambiente virtual com python3.10
Ative este ambiente com
Agora execute
python3
, e deve serpython3.10
.Descobri que o pyenv é mais confortável de usar do que outras ferramentas como o anaconda.
Você pode encontrar as instruções de instalação aqui: https://github.com/pyenv/pyenv#automatic-installer
Após instalá-lo, usá-lo é tão simples quanto executar
para instalar uma determinada versão do python.
Se você quiser usar a versão python globalmente, você pode defini-la com
e se você quiser defini-lo apenas em um projeto, você pode fazer isso com:
Isso criará um
.python-version
arquivo contendo a versão, e o pyenv executará automaticamente essa versão quando você executar o python nesse diretório. Isso é útil quando você está trabalhando em vários projetos que exigem diferentes versões do python, o que pode acontecer frequentemente em um ambiente profissional ou com certos projetos OSS.Tenha em mente que isso dá a cada versão do Python um virtualenv, e que os pacotes que você instalou no Python do sistema, mesmo que estivessem na mesma versão no momento, não estarão acessíveis.
Veja como usar o Python e seus pacotes, na ordem da minha preferência:
1. Use o sistema Python e os pacotes do sistema
No Ubuntu 24.04, isso significa Python 3.12. Você instala os pacotes necessários por meio do apt (por exemplo
apt install python3-numpy
, ouapt install python3-django
).2. Use o sistema Python e o ambiente virtual
Novamente, para você isso significa Python 3.12. Configure um Venv e instale pacotes lá (por exemplo,
virtualenv venv; source venv/bin/activate; pip install whatever
).3. Use pyenv ou algo como anaconda
Diferentemente das soluções anteriores, isso permite que você obtenha diferentes versões do Python. Tente evitar isso, se puder. Se o software funciona no Python 3.10, mas quebra no Python 3.12, a melhor abordagem é consertar o software.
Nunca use pip como usuário fora de um venv (ou pyenv ou anaconda, ou...)
Isso instala o software "globalmente" sob sua conta de usuário. Fica difícil de gerenciar, e você não obtém isolamento entre os projetos.
NUNCA use pip como root fora de um venv (ou ...)
Os mesmos problemas acima, mas maiores. Pode quebrar seu sistema.
Só porque não vi ninguém mencionando o docker:
Se você não tiver o docker instalado:
Isso executa o python na versão que você especificar na tag. Você pode passar qualquer versão, que funcionará. Muito mais rápido de configurar do que ter que instalar versões diferentes e tem um melhor isolamento do resto do seu SO. Se você precisar executar arquivos dentro do seu contêiner docker, use a
-v
opção para montar seu sistema de arquivos no sistema de arquivos dos contêineres.Claro, a utilidade desta solução depende muito do seu caso de uso. Se quiser ler mais sobre o docker, veja sua documentação: https://docs.docker.com/