Construindo e Distribuindo Seu Pacote
Agora que criamos um pacote Python com arquivos adicionais e confirmamos que podemos acessá-los, vamos aprender como construir e distribuir este pacote.
Atualizando o Script de Configuração
Antes de construir o pacote, vamos atualizar nosso arquivo setup.py para incluir mais metadados e requisitos:
cd ~/project
cat > setup.py << 'EOF'
from setuptools import setup, find_packages
setup(
name="mypackage",
version="0.1.0",
packages=find_packages(),
## Include data files
package_data={
"mypackage": ["config.ini", "data/*.txt"],
},
## Dependencies
install_requires=[
"setuptools",
],
## Metadata
author="Your Name",
author_email="your.email@example.com",
description="A simple Python package with additional files",
keywords="sample, package, data",
url="https://example.com/mypackage",
classifiers=[
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
],
python_requires=">=3.6",
)
EOF
Construindo Distribuições de Código-Fonte e Wheel
Pacotes Python podem ser distribuídos em vários formatos, mas os mais comuns são:
- Distribuição de Código-Fonte (sdist): Um tarball contendo o código-fonte e arquivos adicionais
- Distribuição Wheel (bdist_wheel): Um pacote pré-construído que pode ser instalado sem construir
Vamos criar ambos os tipos de distribuições:
## Make sure we have the latest build tools
pip install --upgrade setuptools wheel
## Build the distributions
python setup.py sdist bdist_wheel
Você deve ver uma saída indicando que as distribuições foram criadas, e novos arquivos devem aparecer no diretório dist.
Vamos verificar o conteúdo do diretório dist:
ls -l dist
Você deve ver pelo menos dois arquivos:
- Um arquivo
.tar.gz (a distribuição de código-fonte)
- Um arquivo
.whl (a distribuição wheel)
Instalando o Pacote a partir dos Arquivos de Distribuição
Agora, vamos testar a instalação do pacote a partir de um dos arquivos de distribuição. Primeiro, vamos desinstalar nossa versão de desenvolvimento:
pip uninstall -y mypackage
Agora, vamos instalar a distribuição wheel:
pip install dist/mypackage-0.1.0-py3-none-any.whl
Você deve ver uma saída indicando que o pacote foi instalado com sucesso.
Vamos verificar se o pacote está instalado e se ainda podemos acessar os arquivos adicionais:
python -c "import mypackage; print(mypackage.read_config())"
Isso deve exibir o conteúdo do arquivo config.ini:
[config]
debug = true
log_level = INFO
Publicando Seu Pacote
Em um cenário do mundo real, você normalmente publicaria seu pacote no Python Package Index (PyPI) para que outros possam instalá-lo usando pip install mypackage. Isso envolveria:
- Criar uma conta no PyPI (https://pypi.org/)
- Usar ferramentas como
twine para fazer upload de suas distribuições:pip install twine
twine upload dist/*
No entanto, para este laboratório, vamos parar na criação das distribuições localmente. Agora você tem um pacote Python completo com arquivos adicionais que podem ser distribuídos e instalados por outros.
Resumo do Que Você Criou
- Um pacote Python com módulos e arquivos adicionais
- Um script de configuração que inclui esses arquivos na distribuição
- Funções para acessar esses arquivos a partir do seu código
- Arquivos de distribuição de código-fonte e wheel prontos para distribuição
Esta estrutura fornece uma base sólida para qualquer pacote Python que você possa querer criar no futuro.