Criando um pacote

Desenvolvendo pacotes Python

James Fulton

Climate informatics researcher

Por que criar um pacote?

  • Para deixar seu código mais fácil de reutilizar
  • Para evitar muito copiar e colar
  • Para manter suas funções atualizadas
  • Para compartilhar seu código com outras pessoas
Desenvolvendo pacotes Python

Conteúdo do curso

Você vai criar um pacote completo e ver:

  • Estrutura de arquivos
  • Estrutura de importação
  • Como tornar seu pacote instalável
  • Como adicionar licenças e READMEs
  • Estilo e testes de unidade para alta qualidade
  • Registrar e publicar seu pacote no PyPI
  • Uso de templates de pacote
Desenvolvendo pacotes Python

Scripts, módulos e pacotes

  • Script - Um arquivo Python executado como python myscript.py

  • Pacote - Um diretório cheio de código Python para ser importado

    • ex.: numpy
  • Subpacote - Um pacote menor dentro de um pacote

    • ex.: numpy.random e numpy.linalg
  • Módulo - Um arquivo Python dentro de um pacote que guarda o código do pacote.

    • ex.: exemplo nas próximas 2 slides
  • Biblioteca - Um pacote ou uma coleção de pacotes

    • ex.: a biblioteca padrão do Python (math, os, datetime, ...)
Desenvolvendo pacotes Python

Árvore de diretórios de um pacote

Árvore de diretórios de um pacote simples

mysimplepackage/
|-- simplemodule.py
|-- __init__.py
  • Este diretório, chamado mysimplepackage, é um pacote Python
  • simplemodule.py contém todo o código do pacote
  • __init__.py marca este diretório como um pacote Python
Desenvolvendo pacotes Python

Conteúdo do pacote simples

__init__.py

Arquivo vazio

simplemodule.py
def cool_function():
    ...
    return cool_result

...

def another_cool_function():
    ...
    return another_cool_result

Arquivo com funções e código generalizados.

Desenvolvendo pacotes Python

Subpacotes

Árvore de diretórios de um pacote com subpacotes

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Desenvolvendo pacotes Python

Vamos praticar!

Desenvolvendo pacotes Python

Preparing Video For Download...