Nem sempre o processo de gestão de dependências e publicação com projetos Python é um trabalho simples. Existem muitas ferramentas envolvidas no ecossistema: virtualenv, pip, pipenv, etc. E muitas vezes pode se tornar um pouco confuso.
Para facilitar a nossa vida existe uma ferramenta que se chama Poetry!
Instalação
Antes de mais nada precisamos instalar o poetry na nossa máquina.
❯ brew install poetry
❯ poetry --version Poetry version 1.1.6
Aqui vemos que temos a versão 1.1.6 instalada. Para atualizar a poetry, você pode executar:
❯ poetry self update
Você também pode instalar poetry usando o comando pip tradicional, mas o poetry fica limitada a criar ambientes virtuais para a versão python para a qual foi instalado.
Inicializar um projeto
Para estudar poetry, vamos criar um novo projeto com o nome de 'poet':
❯ poetry new poet Created package poeta in poet
A estrutura em árvore do projeto criado é semelhante à seguinte.
├── pyproject.toml ├── README.rst ├── poet │ └── __init__.py └── tests ├── __init__.py └── test_poet.py
O arquivo pyproject.toml contém todas as informações necessárias para gerenciar nosso pacote. Mas caso você já tenha um projeto e deseja gerenciar as dependências com poetry, pode usar o comando init. Você receberá um shell interativo para configurar seu projeto.
❯ poetry init
Adicionando um pacote
Certo, vamos supor que precisamos manipular datas e será necessário importar uma biblioteca, com poetry, adicionar uma dependência é simples.
❯ poetry add arrow
Remova um pacote
Remover um pacote também é uma tarefa simples, graças ao comando remove.
❯ poetry remove arrow
Instale o pacote e dependências
Para instalar o pacotes e suas dependências basta rodar o comando:
❯ poetry install
Listar dependências
Para listar todas as dependências instaladas, podemos usar o comando show.
❯ poetry show arrow 1.1.0 Better dates & times for Python attrs 21.2.0 Classes Without Boilerplate more-itertools 8.8.0 More routines for operating on iterables, beyond itertools packaging 20.9 Core utilities for Python packages pluggy 0.13.1 plugin and hook calling mechanisms for python py 1.10.0 library with cross-python path, ini-parsing, io, code, log facilities pyparsing 2.4.7 Python parsing module pytest 5.4.3 pytest: simple powerful testing with Python python-dateutil 2.8.1 Extensions to the standard Python datetime module six 1.16.0 Python 2 and 3 compatibility utilities wcwidth 0.2.5 Measures the displayed width of unicode strings in a terminal
Ambiente virtual
Precisamos ativar nosso ambiente com o comando shell
❯ poetry shell Virtual environment already activated: /Users/f0rmig4/Library/Caches/pypoetry/virtualenvs/poet-vHKbTPL9-py3.9
Para obter informações importante do nosso ambiente virtual o comando info pode ser muito útil
❯ poetry env info Virtualenv Python: 3.9.5 Implementation: CPython Path: /Users/f0rmig4/Library/Caches/pypoetry/virtualenvs/poet-vHKbTPL9-py3.9 Valid: True System Platform: darwin OS: posix Python: /usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9
Também podemos adicionar a opção “- path” ao comando anterior para obter apenas o caminho do ambiente virtual
❯ poetry env info --path /Users/f0rmig4/Library/Caches/pypoetry/virtualenvs/poet-vHKbTPL9-py3.9
Mão na massa
Vamos criar um simples script Python para estudo:
❯ cd poet ❯ vi poet/run.py
Adicione o seguinte conteúdo:
"""Run App""" import arrow def run(): arw = arrow.utcnow() print(f"Date Now: {arw}") if __name__ == "__main__": run()
Executar o nosso script
Para executar seu script basta usar o comando run:
❯ poetry run python poet/run.py
Build
Agora para construir um pacote, basta executarmos o comando build!
❯ poetry build
Agora estamos prontos para iniciar projetos python de forma simples e rápida. Tudo o que você precisa lembrar deste ponto em diante é usar Poetry - e apenas Poetry - para gerenciar todas as dependências para os seus projetos.
Que a força esteja com vocês!
Published Jun 20, 2021 by f0rmig4