Instalando diversas versões de Python com pyenv
Uma das coisas mais complexas de se fazer bem feito ao trabalhar com Python, é utilizar diversas versões corretamente, sem bagunçar o python nativo do seu sistema operacional.
Semana passada, assiti uma palestra do Sebastian Witowski
na PyCon 2020
, chamada: Modern Python Developer’s Toolkit. Achei ela tão boa, que resolvi compartilhar uma parte dela aqui. Mais especificamente a parte sobre a configuração do pyenv
, para manter diversas versões do Python na sua máquina.
Instalação do Pyenv
A maneira mais fácil de instalar o pyenv
no Linux, ou macOS, é utilizando o script pyenv-installer.
curl https://pyenv.run | bash
O comando acima, vai instalar o pyenv, e algumas ferramentas adicionais:
pyenv-doctor
(para verificar se o pyenv está instalado e funcionando)pyenv-virtualenv
(plugin para gerenciar virtual enviroments)pyenv-which-ext
(esse plugin deixa você rodar comandos externos que não estão instalados no virtualenv atual)pyenv-update
(plugin para atualizar a versão do pyenv)
E no fim da instalação, você verá no terminal algumas instruções com comandos que devem ser adicionados no arquivo .bashrc
(ou .zshrc
/config.fish
), não se esqueça desse passo. E então reinicie o seu terminal, para carregar as novas configurações.
Instalação no Ubuntu
Para uma instalação limpa do ubuntu, pode ser necessário instalar algumas libs antes:
sudo apt-get install build-essential libbz2-dev libffi-dev liblzma-dev libreadline-dev libsqlite3-dev libssl-dev python-tk python3-tk tk-dev zlib1g-dev -y
Instalando versões diferentes do Python
Com o comando abaixo, você pode verificar quais as versões disponíveis para instalação:
pyenv install --list
Resultado:
Available versions:
2.1.3
...
2.7.17
2.7.18
...
3.8.3
3.8.4
3.8.5
3.8.6
3.9.0
3.9-dev
3.10-dev
...
activepython-3.6.0
...
anaconda3-2020.07
graalpython-20.1.0
graalpython-20.2.0
...
ironpython-2.7.7
jython-dev
...
jython-2.7.2
...
miniconda3-4.7.10
miniconda3-4.7.12
...
pypy3.6-7.3.1
pyston-0.5.1
pyston-0.6.0
pyston-0.6.1
stackless-dev
...
stackless-3.5.4
stackless-3.7.5
Para instalar uma dessas versões, utilize:
pyenv install 3.8.5
No macOS
, talvez você precise indicar alguns parâmetros opcionais, para indicar o local da zlib
:
CPPFLAGS="-I$(brew --prefix zlib)/include" pyenv install -v 3.9.0
Visualizando as versões instaladas
Este comando abaixo retornará uma lista de versões instaladas pelo pyenv.
pyenv versions
Escolhendo a versão que deseja utilizar
pyenv global 3.9.0
PS: Deixo aqui também uma menção ao podcast Talk Python To Me #279, onde o entrevistado é o próprio Sebastian, falando sobre o assunto da sua palestra.