Gerenciando Múltiplas Versões do Python e Ambientes Virtuais com Pyenv— 9 passos
Quando se trabalha em diversos projetos Python, é comum a necessidade de alternar entre diferentes versões do Python e isolar as dependências de cada projeto. Uma ferramenta poderosa que permite fazer isso de forma eficiente é o pyenv
, combinado com o gerenciamento de ambientes virtuais. Neste post, vamos explorar como instalar e usar o pyenv
em um sistema Ubuntu, além de detalhar como os ambientes virtuais criados pelo pyenv
são organizados.
1 - Instalando Dependências Necessárias
Antes de instalar o pyenv
, é essencial instalar algumas dependências que permitirão a compilação de várias versões do Python. Abra um terminal e execute o seguinte comando:
sudo apt update && sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
2 - Instalando o Pyenv
A maneira mais simples de instalar o pyenv
é através do script de instalação automática. Execute o seguinte comando no terminal:
curl https://pyenv.run | bash
Esse comando baixa e executa o script, instalando o pyenv
e alguns plugins úteis, como pyenv-virtualenv
.
3 - Configurando o Shell
Após a instalação, você precisa adicionar o pyenv
ao seu PATH
e inicializá-lo automaticamente ao abrir um terminal. Adicione as seguintes linhas ao arquivo de configuração do seu shell (.bashrc
para Bash ou .zshrc
para Zsh):
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"
Para aplicar as alterações, execute source ~/.bashrc
ou source ~/.zshrc
, dependendo do seu shell.
4 - Instalando Versões do Python com Pyenv
Para instalar uma nova versão do Python, use o comando pyenv install
, seguido pelo número da versão. Por exemplo:
pyenv install 3.10.13
4.1 - Atenção: possível erro
No meu ubuntu, apresentou o seguinte erro ao tentar instalar o python 3.10.13:
Installing Python-3.10.13...
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named '_bz2'
....
ModuleNotFoundError: No module named '_curses'
.....
Uma solução seria instalar também as libs abaixo:
sudo apt-get update
sudo apt-get install -y libbz2-dev libncurses5-dev libreadline-dev libffi-dev libssl-dev
Agora é só tentar instalar o Python novamente:
pyenv install 3.10.13
5 - Gerenciando a versão do Python
Para definir uma versão do Python como padrão para todo o sistema (usuário), use:
pyenv global 3.10.13
Para definir uma versão do Python para um diretório específico (projeto), navegue até o diretório e use:
pyenv local 3.10.13
Isso criará um arquivo .python-version
no diretório especificado, definindo a versão do Python para esse diretório.
6. Verificar a versão do Python
Para verificar a versão atual do Python que está sendo usada, você pode usar:
python --version
Ou para verificar a versão do Python gerenciada pelo pyenv
:
pyenv version
7 - Gerenciamento de Ambientes Virtuais
O pyenv
também permite criar ambientes virtuais para isolar as dependências de cada projeto. Para criar um ambiente virtual para a versão 3.10.13 do Python, execute:
pyenv virtualenv 3.10.13 nome_do_ambiente
7.1 - Definindo o ambiente na pasta local
No diretorio do projeto, você pode setar o ambiente criado anteriormente:
pyenv local nome_do_ambiente
8 - Onde os Ambientes Virtuais são Armazenados?
Os ambientes virtuais criados pelo pyenv
são armazenados no diretório ~/.pyenv/versions/
. Cada ambiente virtual é um subdiretório dentro dessa pasta, contendo sua própria instalação do Python e bibliotecas. Por exemplo, um ambiente virtual chamado nome_do_ambiente
usando Python 3.10.13 estará localizado em ~/.pyenv/versions/3.10.13/envs/nome_do_ambiente/
.
9 - Ativando e Desativando Ambientes Virtuais
Para ativar um ambiente virtual, navegue até o diretório do seu projeto e execute:
pyenv activate nome_do_ambiente
Para desativá-lo, simplesmente execute:
pyenv deactivate
Conclusão
O pyenv
, combinado com o gerenciamento de ambientes virtuais, oferece uma solução robusta para trabalhar com múltiplas versões do Python e isolar as dependências dos projetos. Ao seguir os passos descritos, você pode facilmente alternar entre diferentes versões do Python e manter seus projetos organizados e isolados.