DEV Community

Gabriel (Gabu) Bellon
Gabriel (Gabu) Bellon

Posted on • Originally published at gabubellon.me on

2 2

Instalando e utilizando o pyenv

pyenv

Pyenv é um gerenciador criado para controlar múltiplas versões de python em um mesmo ambiente.O mesmo permite ter versões distintas sendo executadas, além de se combinar com a criação de ambientes virtuais.

Instalando o pyenv

Basta seguir as recomendações do repositório oficial:https://github.com/pyenv/pyenv#basic-github-checkout

Ou utilizar um script de instalação que auxila em algumas configurações:https://github.com/pyenv/pyenv-installer



#Executando pela instalação purta 
$ curl https://pyenv.run | bash



Enter fullscreen mode Exit fullscreen mode

ou



#Utilizando o script de instalação
$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash



Enter fullscreen mode Exit fullscreen mode

É necessário modificar o arquivo de configuração de seu interpretador de comandas (.bashrc para o bash ou .zshrc para zsh/ohmyzsh) e adicionar os caminhos de path para o pyenv:



export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
#Aqui já ativando o virtualenv para funcionar nativamente
eval "$(pyenv virtualenv-init -)"



Enter fullscreen mode Exit fullscreen mode

Abra um novo terminal (ou execute um source .bashrc por exemplo) e execute o comando para verificar a instalação:



$ pyenv



Enter fullscreen mode Exit fullscreen mode

Deve retornar algo parecido dependendo da versão atual:

pyenvcmd

Utilizando o pyenv

Seguem alguns comandos e exemplos utéis para utilizar o pyenv.

  • pyenv version: exibe a versão\versões corrente do python sendo utilizadas;
  • pyenv versions: lista todas versões de python instaladas;
  • pyenv global: lista a versão\versões globais de python;
  • pyenv global version1 <version2...versionN>: define quais as versões e ordem a serem definida como global;
  • pyenv install <version>: instala uma versão de python

Exemplos

  • Listar a versão corrente (system):


$ pyenv versions
> system (set by /home/gabriel/.pyenv/version)



Enter fullscreen mode Exit fullscreen mode
  • Instalar a versão python 3.5.7:


$ pyenv install 3.5.7 
> Downloading Python-3.5.7.tar.xz...
> -> https://www.python.org/ftp/python/3.5.7/Python-3.5.7.tar.xz
> Installing Python-3.5.7...
> Installed Python-3.5.7 to /home/gabriel/.pyenv/versions/3.5.7



Enter fullscreen mode Exit fullscreen mode
  • Listar as versões instaladas (system e 3.5.7):


$ pyenv versions
> * system (set by /home/gabriel/.pyenv/version)
> 3.5.7 (set by /home/gabriel/.pyenv/version)



Enter fullscreen mode Exit fullscreen mode

O símbolo * indica a versão definida como global, que pode também pode ser verificada com o comando:



$ pyenv global
> system



Enter fullscreen mode Exit fullscreen mode

Isso indica que todos os comandos pythons (pip, pip3 python, python3, etc.) serão executados pela versão system.

  • Modificando a versão global para a versão 3.5.7 e verificando a mesma:


$ pyenv global 3.5.7; pyenv versions
> system
> * 3.5.7 (set by /home/gabriel/.pyenv/version)



Enter fullscreen mode Exit fullscreen mode
  • Executando os comandos python, python3 e python3.5 (irá executar a versão 3.5.7):


$ python
> Python 3.5.7 (default, Jun 21 2019, 17:36:06) 
> [GCC 7.4.0] on linux
> Type "help", "copyright", "credits" or "license" for more information.
> >>
> ...
$ python3
Python 3.5.7 (default, Jun 21 2019, 17:36:06) 
[GCC 7.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
> >>  
> ...
$ python3.5
> Python 3.5.7 (default, Jun 21 2019, 17:36:06)
> [GCC 7.4.0] on linux
> Type "help", "copyright", "credits" or "license" for more information.
> >>



Enter fullscreen mode Exit fullscreen mode
  • Modificando a versão global para as duas (3.57 e system) e resolvendo nessa ordem:


$ pyenv global 3.5.7 system; pyenv global
> 3.5.7
> system



Enter fullscreen mode Exit fullscreen mode
  • Executando o comando python e python3.6 e python2.7:


$ python
> Python 3.5.7 (default, Jun 21 2019, 17:36:06) 
> [GCC 7.4.0] on linux
> Type "help", "copyright", "credits" or "license" for more information.
> >>
> ...
$ python3.6
> Python 3.6.8 (default, Jan 14 2019, 11:02:34) 
> [GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
> Type "help", "copyright", "credits" or "license" for more information.
>>>
> ...
$ python2.7
> Python 2.7.15+ (default, Nov 27 2018, 23:36:35)
> [GCC 7.3.0] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>>



Enter fullscreen mode Exit fullscreen mode

A versão 3.5.7 é reconhecida como inicial, resolvendo o comandopython,sendo o comandos python3.6 e python2.7 resolvidos pela versão system

  • Invertendo as ordens das versões (system e depois 3.5.7):


$ pyenv global system 3.5.7; pyenv global
> system
> 3.5.7



Enter fullscreen mode Exit fullscreen mode
  • Executando o comandos novamente python e python3 e python3.5:


$ python
> Python 2.7.15+ (default, Nov 27 2018, 23:36:35) 
> [GCC 7.3.0] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>>
> (...)
$ python3
> Python 3.6.8 (default, Jan 14 2019, 11:02:34) 
> [GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
> Type "help", "copyright", "credits" or "license" for more information.
> >>>
> (...)
$ python3.5
> Python 3.5.7 (default, Jun 21 2019, 17:36:06) 
> [GCC 7.4.0] on linux
> Type "help", "copyright", "credits" or "license" for more information.>
> >>>



Enter fullscreen mode Exit fullscreen mode

A versão inicial (system) resolve os comandos pythone python3, sendo que o comando python3.5 é resolvido pela versão também definida como global (3.5.7)

**Portanto a ordem de versões para `pyenv global v1 será a ordem que os comandas serão interpretados, fazendo com que possamos ter várias versões de python simultâneas e sem gerar concorrência.**

Para mais detalhes, documentações e exemplos consulte o repositório oficial da ferramenta: https://github.com/pyenv/pyenv

Para Ler na sequência: Combinando o virtualenvwarpper com o pyenv

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

While many AI coding tools operate as simple command-response systems, Qodo Gen 1.0 represents the next generation: autonomous, multi-step problem-solving agents that work alongside you.

Read full post

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay