Módulos
Módulo: objeto que serve como unidade organizacional do código que é carregado pelo comando de import.
Vantagens da modularização:
- Legibilidade
- Manutenção
- Reaproveitamento de código
Pacotes
Pacote: coleção de módulos com hierarquia.
Vantagens de criar um pacote:
- Facilidade de compartilhamento
- Facilidade de instalação
Conceitos
- Pypi: repositório público oficial de pacotes
- Wheel e Sdist: dois tipos de distribuições
- Setuptools: pacote usado em setup.py para gerar as distribuições
- Twine: pacote usado para subir as distribuições no repositório Pypi
Estruturas
Módulo simples:
└── project_name/
├── README.md
├── setup.py
├── requirements.txt
└── package_name/
├── __init__.py
├── file1_name.py
├── file2_name.pyExemplos de chamada para o pacote simples:
import package_name.file1_namefrom package_name import file1_name
Vários módulos:
└── project_name/
├── README.md
├── setup.py
├── requirements.txt
└── package_name/
├── __init__.py
├── module1_name/
├── file1_name.py
├── file2_name.py
├── module2_name/
├── file1_name.py
├── file2_name.pyExemplos de chamada para o pacote com vários módulos:
import package_name.module1_name.file1_namefrom package_name.module1_name import file1_name
Passos para criar um projeto
- Fork do template
- Adição do conteúdo dos módulos do projeto
- Edição do arquivo setup.py
- Edição do requirements.txt
- Edição do README.md
Exemplo:
image-processing-package/
README.md
setup.py
requirements.txt
image_processing/
__init__.py
processing/
__init__.py
combination.py
transformation.py
utils/
__init__.py
to.py
plot.pysetup.py: Usado para especificar como o pacote deve ser construído.requeriments.txt: Usado para passar as dependências que devem ser instaladas com o seu pacote. Opcionalmente, podem ser especificadas as versões.README.md: Será exibido como documentação na página do Pypi do seu pacote. Foi usado markdown.
Comandos de instalação
python -m pip install --upgrade pip
python -m pip install --user twine
python -m pip install --user setuptoolsComandos para criar distribuições:
python setup.py sdist bdist_wheel
Publicando o pacote
Passos necessários:

Passos para subir o pacote:
- Criar conta no Test Pypi
- Publicar no Test Pypi
- Instalar pacote usando Test Pypi
- Testar pacote
- Criar conta no Pypi
- Publicar no Pypi
- Instalar pacote usando Pypi
Comando para publicar no Test Pypi:
python -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*
Comando para instalar o pacote de teste:
pip install –-index-url https://test.pypi.org/simple/ image-processing
Comando para publicar no Pypi:
python -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
Comando para instalar o pacote:
python -m pip install package_name