Article image

VP

Viviani Pedroso02/12/2024 18:28
Compartilhe

Procedimentos criação pacotes Python

  • #Python

Diferenças entre Módulo e Pacote

Um módulo é um arquivo (.py) contendo código Python que pode ser importado e reutilizado em outros programas. Por outro lado, um pacote é um conjunto de módulos organizados em pastas contendo um arquivo init.py, o qual identifica que o diretório como um pacote Python.

Quais vantagens de modularização e criação de pacotes?

A modularização oferece:

  • Legibilidade: Código claro e dividido em partes menores.
  • Manutenção: Facilita a atualização e correção.
  • Reaproveitamento de Código: É possível reutilizar módulos em diferentes projetos.

Criação de pacotes permite:

  • Facilidade de Compartilhamento: Os pacotes podem ser publicados em ambientes como PyPI, assim facilita o uso por outros desenvolvedores.
  • Instalação Simplificada: A instalação é simples por meio de ferramentas como o pip.

Conceitos Básicos

  • PyPI: Repositório público oficial para publicação e distribuição de pacotes Python.
  • Wheel e Sdist: Tipos de distribuições criadas para publicar pacotes com extensão (.whl e *.tar.gz).*
  • Setuptools: Ferramenta para criar distribuições, a qual é definida no arquivo setup.py.
  • Twine: Utilitário para upload de pacotes no PyPI.

Estrutura do projeto

O projeto pode ter uma estrutura simples ou com vários módulos como segue abaixo:

Estrutura Simples:

new_projeto/

    ├── setup.py

    ├── README.md

    ├── requirements.txt

    └── new_pacote/

        ├── __init__.py

        └── modulo.py

Estrutura com Múltiplos Módulos:

new_projeto/

    ├── setup.py

    ├── README.md

    ├── requirements.txt

    └── new_pacote/

        ├── __init__.py

        ├── modulo1/

        │   ├── __init__.py

        │   └── arquivo1.py

        └── modulo2/

            ├── __init__.py

            └── arquivo2.py

Cada arquivo realiza uma função específica:

  • setup.py: Define as configurações do pacote como nome do pacote, versão, informações do autor e GIT que contém o projeto.
  • README.md: Documentação básica com instruções de instalação e utilização.
  • requirements.txt: Arquivo que contém as dependências do pacote.
  • init.py: Indica que o diretório é um pacote Python.

Distribuições

É necessário criar uma distribuição binária ou de código-fonte (como um arquivo .tar.gz) para publicar um pacote. O pip normalmente instala a versão binária, mas utiliza o código-fonte apenas se necessário.

Gerando Distribuições

No diretório raiz do projeto, faz-se necessário instalar pacotes dependentes:

python -m pip install --upgrade pip
python -m pip install --user twine
python -m pip install --user setuptools
python -m pip install wheel

Após isso, será possível gerar as distribuições (wheel e sdist):

 python [setup.py](<http://setup.py/>) sdist bdist_wheel

Publicando no Test PyPI

- Crie uma conta no [Test PyPI](<https://test.pypi.org/account/register/>).

- Ative a autenticação de dois fatores (2FA) para maior segurança.

- Criar API token para utilização do Twine.

- Publique o pacote com o Twine:

python -m twine upload --repository-url <https://test.pypi.org/legacy/> dist/*

Publicando no PyPI

- Certifique-se de que o pacote foi testado no Test PyPI.

- Crie uma conta no <https://pypi.org/account/register/>

- Publique o pacote com o Twine:

python -m twine upload --repository-url <https://upload.pypi.org/legacy/> dist/*

Instalando o Pacote

Test PyPI

pip install -i <https://test.pypi.org/simple/new_pacote>

PyPI

pip install new_pacote

Referências bibliográficas

https://docs.google.com/presentation/d/1gzBKKZdtJdDfhKBF_0Yr4k6Xj8yke2CT/edit?usp=sharing&ouid=105300330738120646134&rtpof=true&sd=true

https://packaging.python.org/

https://setuptools.pypa.io/

https://pypi.org/

https://test.pypi.org/

https://twine.readthedocs.io/

Compartilhe
Comentários (1)
Marcelo Andrade
Marcelo Andrade - 02/12/2024 18:47

Obrigado por compartilhar, Viviane. Fiz o meu primeiro pacote com certa dificuldade. Tendo algum norte, realmente já ajuda bastante.