howto:pyenv
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| Próxima revisão | Revisão anterior | ||
| howto:pyenv [2025/04/09 14:33] – criada devnull | howto:pyenv [2025/04/16 14:31] (atual) – edição externa 127.0.0.1 | ||
|---|---|---|---|
| Linha 1: | Linha 1: | ||
| - | ====== | + | ====== |
| + | Uma ferramenta interessante para lidar com as inúmeras versões do __python__ e deixar seus projetos bem isolados da versão do __python__ de seu sistema é o **pyenv**. | ||
| + | ===== O que é o pyenv? ===== | ||
| + | |||
| + | Como o próprio [[https:// | ||
| + | > //Simple Python Version Management: pyenv// | ||
| + | |||
| + | Simples gerenciador de versão do __python__ (tradução livre minha). Ele pode se instalar em sua //home// e temos a possibilidade de escolher quais versões do __python__ instalar, montar um ambiente virtual com uma versão específica do __python__ escolher globalmente a versão desejada ou localmente qual ambiente virtual usar ou a versão, isolando assim o __python__ nativo de sua distro. | ||
| + | |||
| + | ===== 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, precisará ter privilégios de superusuário para tal | ||
| + | |||
| + | <code bash> | ||
| + | apt install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \ | ||
| + | libsqlite3-dev curl git libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \ | ||
| + | libffi-dev liblzma-dev | ||
| + | </ | ||
| + | |||
| + | no Arch linux, também como superusuário | ||
| + | |||
| + | <code bash> | ||
| + | pacman -S --needed base-devel openssl zlib xz tk | ||
| + | </ | ||
| + | |||
| + | No FreeBSD, também como superusuário: | ||
| + | |||
| + | < | ||
| + | pkg install shells/bash ftp/curl devel/git databases/ | ||
| + | </ | ||
| + | |||
| + | 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=/ | ||
| + | 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 | ||
| + | </ | ||
| + | |||
| + | o trecho '' | ||
| + | |||
| + | Agora é só usar o instalador automático | ||
| + | |||
| + | <code bash> | ||
| + | curl https:// | ||
| + | </ | ||
| + | |||
| + | Ao término desse processo o próprio instalador dará um trecho a ser adicionado em seu arquivo '' | ||
| + | |||
| + | <code bash> | ||
| + | export PYENV_ROOT=" | ||
| + | [[ -d $PYENV_ROOT/ | ||
| + | eval " | ||
| + | |||
| + | eval " | ||
| + | </ | ||
| + | |||
| + | Reinicie seu terminal ou simplesmente faça '' | ||
| + | |||
| + | ===== Instalando versões do python ===== | ||
| + | |||
| + | Para verificar as versões disponíveis do **python**, faça | ||
| + | <code bash> | ||
| + | pyenv install -l | ||
| + | </ | ||
| + | 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 | ||
| + | </ | ||
| + | |||
| + | 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 '' | ||
| + | <code bash> | ||
| + | pyenv install 3.12 | ||
| + | </ | ||
| + | |||
| + | ===== 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 | ||
| + | </ | ||
| + | |||
| + | Ao definir o uso de uma versão de forma global, essa versão estará automaticamente definida em ''/ | ||
| + | |||
| + | 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 | ||
| + | </ | ||
| + | e verá que a saída é algo do tipo ''/ | ||
| + | |||
| + | 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 | ||
| + | </ | ||
| + | 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, | ||
| + | <code bash> | ||
| + | pyenv virtualenv 3.12.2 projetoZ | ||
| + | </ | ||
| + | |||
| + | Agora temos uma nova versão chamada " | ||
| + | <code bash> | ||
| + | pyenv local projetoZ | ||
| + | </ | ||
| + | e por conta da linha '' | ||
| + | |||
| + | Você pode verificar onde estão os arquivos das bibliotecas do **python** sempre com o comando '' | ||
| + | |||
| + | ===== 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 // | ||
| + | <code bash> | ||
| + | python -m venv .venv | ||
| + | </ | ||
| + | onde '' | ||
| + | <code bash> | ||
| + | source ./ | ||
| + | </ | ||
| + | |||
| + | Para alguns a forma // | ||
howto/pyenv.1744209203.txt.gz · Última modificação: (edição externa)