Slackjeff Wiki

Juntando bits aprendemos juntos

Ferramentas do usuário

Ferramentas do site


howto:pyenv

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
Próxima revisão
Revisão anterior
howto:pyenv [2025/04/09 15:38] orahciohowto:pyenv [2025/04/16 14:31] (atual) – edição externa 127.0.0.1
Linha 5: Linha 5:
 ===== O que é o pyenv? ===== ===== O que é o pyenv? =====
  
-Como o próprio projeto diz,+Como o próprio [[https://github.com/pyenv/pyenv?tab=readme-ov-file#simple-python-version-management-pyenv|projeto]] diz,
 > //Simple Python Version Management: pyenv// > //Simple Python Version Management: pyenv//
  
Linha 12: Linha 12:
 ===== Instalação ===== ===== Instalação =====
  
-Vamos inicialmente instalar as dependências para que o __python__ possa ser compilado em seu sistema, no caso do Debian podemos usar a seguinte linha+Vamos inicialmente instalar as dependências para que o __python__ possa ser compilado em seu sistema, no caso do Debian podemos usar a seguinte linha, precisará ter privilégios de superusuário para tal
  
 <code bash> <code bash>
-sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev +apt install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev 
-libbz2-dev libreadline-dev libsqlite3-dev curl git +libsqlite3-dev curl git libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev 
-libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev+libffi-dev liblzma-dev
 </code> </code>
 +
 +no Arch linux, também como superusuário
 +
 +<code bash>
 +pacman -S --needed base-devel openssl zlib xz tk
 +</code>
 +
 +No FreeBSD, também como superusuário:
 +
 +<code>
 +pkg install shells/bash ftp/curl devel/git databases/sqlite3
 +</code>
 +
 +Já no GuixSD teremos que emular um //shell// com as dependências
 +<code bash>
 +guix shell -C --emulate-fhs --network --preserve=^SSL_CERT --preserve=^HOME \
 +--share=$SSL_CERT_DIR --share=/etc/ssl/certs/ --share=$HOME/tmp=$HOME coreutils \
 +bash wget curl vim git sed grep gawk tar gzip gcc-toolchain pkg-config python\
 +findutils make zlib openssl bzip2 ncurses libffi readline sqlite xz -- bash
 +</code>
 +
 +o trecho ''-''''-share=$HOME/tmp=$HOME'' especifica que no //shell// emulado a pasta //home// estará dentro de um diertório //tmp// na pasta pessoal, isso é opcional.
 +
 +Agora é só usar o instalador automático
 +
 +<code bash>
 +curl https://pyenv.run | bash
 +</code>
 +
 +Ao término desse processo o próprio instalador dará um trecho a ser adicionado em seu arquivo ''.bashrc'' para que o **pyenv** se torne acessível, pode copiar e colar o seguinte trecho
 +
 +<code bash>
 +export PYENV_ROOT="$HOME/.pyenv"
 +[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
 +eval "$(pyenv init - sh)"
 +
 +eval "$(pyenv virtualenv-init -)"
 +</code>
 +
 +Reinicie seu terminal ou simplesmente faça ''source .bashrc'' para ter o comando **pyenv** disponível.
 +
 +===== Instalando versões do python =====
 +
 +Para verificar as versões disponíveis do **python**, faça
 +<code bash>
 +pyenv install -l
 +</code>
 +use o **grep** caso esteja buscando por uma versão em específico e quer verificar se a mesma está disponível
 +<code bash>
 +pyenv install -l | grep 3.12
 +</code>
 +
 +Caso queira por exemplo o **python** 3.12 na última revisão basta omitir o terceiro número da versão e executar o comando sem a flag ''-l''
 +<code bash>
 +pyenv install 3.12
 +</code>
 +
 +===== Definindo a versão do python que será usada =====
 +
 +Agora que temos o **python** na última revisão da versão 3.12 (ou qualquer uma que você tenha instalado - lembre-se que poderá instalar qualquer versão desejada e quantas quiser), podemos usá-la de forma global ao invés do **python** nativo de seu sistema:
 +<code bash>
 +pyenv global 3.12
 +</code>
 +
 +Ao definir o uso de uma versão de forma global, essa versão estará automaticamente definida em ''/home/usuario/.pyenv/shims/python'', o qual pode ser verificado com ''whereis python''
 +
 +Assim, toda vez que usar o comando **python** essa versão que escolhemos é que irá executar, veja que ela esta armazenada na sua //home//, basta executar o comando
 +<code bash>
 +pyenv which python
 +</code>
 +e verá que a saída é algo do tipo ''/home/username/.pyenv/versions/3.13.2/bin/python''.
 +
 +Porém podemos optar pelo uso de uma determinada versão num diretório de um projeto, caso não queira organizar esse projeto num ambiente virtual próprio apenas entre na pasta desejada e execute
 +<code bash>
 +pyenv local 3.12
 +</code>
 +e a versão 3.12 será usada sempre que você estiver nesse diretório em específico e em todos os subdiretórios dele.
 +===== Definindo ambientes virtuais =====
 +
 +Apesar do uso de versões em subpastas, muitas vezes é melhor organizar o projeto em ambientes virtuais construídos para abrigar as dependências daquele projeto. Usando o **pyenv** fica bem simples fazer essa organização, basta criarmos uma "versão" do **pyton** que chamaremos com o nome do ambiente desejado. Por exemplo, quero que meu projeto de nome "projetoZ" seja desenvolvido usando o **python** 3.12.2, então após instalar essa versão podemos usar
 +<code bash>
 +pyenv virtualenv 3.12.2 projetoZ
 +</code>
 +
 +Agora temos uma nova versão chamada "projetoZ", verifique as versões disponíveis com ''pyenv versions'', dessa forma na pasta de seu projeto (após ''cd projetoZ'') basta usar
 +<code bash>
 +pyenv local projetoZ
 +</code>
 +e por conta da linha ''eval "$(pyenv virtualenv-init -)"'' adicionada no ''.bashrc'' esse ambiente é ativado automaticamente toda vez que entrar nesse diretório.
 +
 +Você pode verificar onde estão os arquivos das bibliotecas do **python** sempre com o comando ''pyenv which python'' dentro da pasta de seu projeto.
 +
 +===== Conclusão =====
 +
 +Temos agora disponível uma ferramenta para buscar por versões do **python**, instalá-las e isolar as bibliotecas necessárias para cada projeto em específico e seus respectivos ambientes virtuais. Isso traz uma certa vantagem sobre a forma canônica de criar ambientes virtuais no **python**. Pois ainda é possível selecionar uma versão do **python** e criar o ambiente virtual na maneira //pythônica// usando
 +<code bash>
 +python -m venv .venv
 +</code>
 +onde ''.venv'' é o nome da pasta que contém o ambiente criado, ative o mesmo usando
 +<code bash>
 +source ./.venv/bin/active
 +</code>
 +
 +Para alguns a forma //pythônica// é melhor por manter no diretório do projeto as bibliotecas usadas, o **pyenv** apenas amplia as possibilidades para que você possa desenvolver seus projetos em Python da melhor forma possível. 
howto/pyenv.1744213133.txt.gz · Última modificação: (edição externa)