Setuptools: Gerenciando pacotes Python com facilidade
Tags: python, programming, braziliandevs
Published: 2023-04-10 03:42:10

---
title: 'Setuptools: Gerenciando pacotes Python com facilidade'
published: true
cover_image: 'https://img.freepik.com/fotos-gratis/vista-superior-do-hacker-irreconhecivel-realizando-ataque-cibernetico-a-noite_1098-18706.jpg?w=1480&t=st=1681098578~exp=1681099178~hmac=ec29d4acb26038115403f7f3fa8d682c0c650b76817f53b21afbf9235b1b98a8'
tags: 'python, programming, braziliandevs'
---

Se você é um desenvolvedor Python, provavelmente já se deparou com a necessidade de gerenciar as
dependências de seu projeto e distribuir seu código para outros sistemas operacionais. Nesse caso,
setuptools é uma ferramenta essencial que pode ajudá-lo a automatizar esse processo.

O setuptools é uma biblioteca Python que permite a criação de pacotes Python, gerenciamento de dependências, distribuição e instalação de pacotes.

Neste artigo, discutiremos como usar o setuptools para criar e distribuir pacotes Python.

O primeiro passo para compartilhar uma biblioteca ou programa Python é construir um pacote de distribuição.
Isso inclui adicionar um conjunto de arquivos adicionais contendo metadados e configuração para não apenas
instruir o Setuptools sobre como a distribuição deve ser construída, mas também para ajudar os instaladores
(como pip) durante o processo de instalação.

## 1. Instalação e Configuração

Para começar a usar o setuptools, você precisa instalá-lo em seu ambiente Python. Isso pode ser feito
facilmente usando o pip, o gerenciador de pacotes Python:

```bash
pip install setuptools
```

Após a instalação, você pode começar a usá-lo em seu projeto Python. Se você estiver criando um novo projeto,
pode configurar o ambiente virtual Python e instalar as dependências usando o pip. Caso contrário, pode
adicionar setuptools como uma dependência do projeto.

## 2. Gerenciamento de Dependências

Uma das principais funcionalidades do setuptools é o gerenciamento de dependências. Você pode definir as
dependências do seu projeto em um arquivo `setup.py` e instalar doas elas facilmente usando o pip.

```python
from setuptools import setup

setup(
    name='meu_projeto',
    version='0.1',
    install_requires=[
        'requests',
        'flask',
        'numpy',
    ],
)
```

Essa configuração define as dependências do projeto como `requests`, `flask` e `numpy`, quando executado
o seguindo comando.

```shell
pip install -e .
```

O pip instalará todas as dependências definidas no `setup.py` automaticamente.

## 3. Distribuição de Pacotes

Outra funcionalidade importante é a distribuição de pacotes. Com o setuptools, você pode criar um pacote
Python e distribuí-lo para outros sistemas operacionais.

Por exemplo, você pode distribuir seu pacote no PyPi (Python Package Index) usando o seguinte comando:

```shell
python setup.py sdist bdist_wheel
```

Esse comando criará um pacote de distribuição (meu_projeto-0.1.tar.gz) e o envia para o PyPi. Outros
usuários podem então instalar o pacote usando o pip.

```shell
pip install meu_projeto
```

## 4. Criando um Pacote Python com Setuptools

Para criar um pacote Python com o setuptools, você precisa seguir alguns passos simples.

- `4.1` Primeiro, crie um diretório para o seu pacote Python.

```shell
mkdir meu_projeto
cd meu_projeto
```

- `4.2` Em seguida, crie um arquivo `setup.py` nesse diretório com as informações sobre o pacote.

```shell
touch setup.py
```

- `4.3` Por fim, adicione o seguinte código ao arquivo `setup.py`:

```python
from setuptools import setup, find_packages

setup(
    name='meu_projeto',
    version='0.1',
    description='Meu projeto Python',
    author='Seu Nome',
    packages=find_packages(),
)
```

Este exemplo define as informações básicas do pacote, como nome, versão, descrição e autor.
O parâmetro `packages=find_packages()` informa ao Setuptools para incluir todos os pacotes no diretório
atual e subdiretórios.

Você também pode incluir outras informações no arquivo setup.py, como dependências do pacote e arquivos
de dados adicionais.

- `4.4` Depois de criar o arquivo setup.py, execute o seguinte comando no terminal para criar um arquivo de
distribuição:

```shell
python setup.py sdist
```

- `4.5` Este comando cria um arquivo tar.gz contendo todo o código-fonte do pacote e suas dependências. Você
pode distribuir este arquivo para outros usuários, que podem instalá-lo usando o pip:

```shell
pip install meu_projeto-0.1.tar.gz
```

- `4.6` Se você quiser distribuir seu pacote em outras plataformas, como Windows ou macOS, pode usar a opção
bdist_wheel em vez de sdist. Isso cria um pacote binário que pode ser instalado em qualquer plataforma
compatível.

```shell
python setup.py bdist_wheel
```

- `4.7` Isso criará um arquivo wheel que pode ser distribuído para outros usuários, que podem instalá-lo
usando o pip:

```shell
pip install meu_projeto-0.1-py3-none-any.whl
```

Lembre-se de que é importante incluir todas as dependências do pacote no arquivo setup.py. Isso garantirá
que o pacote possa ser instalado corretamente em outros ambientes Python.

## 5. Configuração avançada do pacote com Setuptools

O Setuptools oferece muitas outras opções de configuração que você pode usar para personalizar seu
pacote Python. Aqui estão algumas das opções mais úteis:

- `install_requires`: Uma lista de dependências do pacote.

- `entry_points`: Uma maneira de definir pontos de entrada do pacote, como scripts e plugins.

- `data_files`: Uma lista de arquivos de dados adicionais que devem ser incluídos no pacote.

- `classifiers`: Uma lista de classificadores do PyPI para ajudar a categorizar o pacote.

Consulte a documentação do Setuptools para obter uma lista completa de opções de configuração.

## 6. Desenvolvimento em ambiente virtual com Setuptools

O desenvolvimento em ambiente virtual é uma prática recomendada para garantir que seu código Python
funcione corretamente em diferentes ambientes. O Setuptools oferece suporte ao desenvolvimento em
ambiente virtual, permitindo que você crie e gerencie ambientes virtuais com facilidade.

Para criar um novo ambiente virtual com o Setuptools, execute o seguinte comando:

```shell
python -m venv env
```

Este comando cria um novo ambiente virtual no diretório env. Para ativar o ambiente virtual, execute
o seguinte comando:

- No Windows: `.\env\Scripts\activate.bat`
- No Linux ou macOS: `source env/bin/activate`

Com o ambiente virtual ativado, você pode instalar as dependências do pacote usando o pip:

```shell
pip install -r requirements.txt
```
O arquivo requirements.txt deve listar todas as dependências do pacote. Você pode gerar automaticamente
este arquivo usando o comando pip freeze.

Quando você estiver pronto para distribuir o pacote, certifique-se de incluir o arquivo `requirements.txt`
e as instruções para criar um ambiente virtual em seu `README` ou documentação.

## 7. Conclusão

Setuptools é uma ferramenta poderosa para criar e distribuir pacotes Python. Ele oferece muitas opções
de configuração e integração com outras ferramentas, como o pip e o virtualenv. Usando o Setuptools,
você pode criar pacotes Python que funcionam em diferentes plataformas e ambientes, tornando mais
fácil compartilhar seu código com outros desenvolvedores.

Para um exemplo completo de como criar e distribuir um pacote Python com Setuptools, consulte a
documentação oficial do Setuptools em <https://setuptools.pypa.io/>.