---
title: "pip: O que É e Como Funciona | Python Brasil"
url: "https://python.dev.br/glossario/pip/"
markdown_url: "https://python.dev.br/glossario/pip.MD"
description: "Guia completo sobre pip: instalar pacotes, gerenciar dependências, pip vs pip3, pip-tools, segurança e alternativas como poetry e uv."
date: "2025-01-25"
author: ""
---

# pip: O que É e Como Funciona | Python Brasil

Guia completo sobre pip: instalar pacotes, gerenciar dependências, pip vs pip3, pip-tools, segurança e alternativas como poetry e uv.


## O que é pip?

O **pip** (acrônimo recursivo de "pip installs packages") é o **gerenciador de pacotes oficial do Python**. Ele permite instalar, atualizar e remover bibliotecas disponíveis no **PyPI** (Python Package Index), o repositório público em [pypi.org](https://pypi.org/) com mais de 500.000 pacotes.

O pip foi criado por Ian Bicking em 2008 como substituto ao `easy_install`, tornando-se a ferramenta padrão da comunidade. A partir do **Python 3.4**, o pip é incluído automaticamente na instalação padrão da linguagem. Não é necessário instalar separadamente.

## pip vs pip3: qual usar?

Em sistemas onde Python 2 e Python 3 coexistem, pode haver dois executáveis: `pip` e `pip3`. A diferença é simples:

- `pip` pode apontar para Python 2 ou Python 3, dependendo da configuração do sistema
- `pip3` aponta especificamente para Python 3

Para evitar ambiguidade, a forma mais segura é sempre invocar o pip como módulo da versão específica do Python:

```bash
# Forma segura e explícita — usa exatamente o pip do python3
python3 -m pip install requests

# Verificar qual Python o pip está usando
pip --version
# pip 24.0 from /usr/local/lib/python3.12/... (python 3.12)

pip3 --version
# mesmo resultado se python3 for a versão padrão
```

Dentro de um **ambiente virtual ativado**, tanto `pip` quanto `pip3` sempre apontam para o ambiente correto. Fora de ambientes virtuais, prefira `python3 -m pip`.

## Comandos essenciais do pip

```bash
# Instalar um pacote
pip install requests

# Instalar versão específica
pip install django==4.2.7

# Instalar com restrição de versão mínima
pip install "fastapi>=0.100.0"

# Instalar intervalo de versões
pip install "numpy>=1.24,<2.0"

# Atualizar um pacote
pip install --upgrade requests

# Atualizar o próprio pip
pip install --upgrade pip

# Desinstalar
pip uninstall requests

# Listar pacotes instalados
pip list

# Listar pacotes desatualizados
pip list --outdated

# Informações detalhadas sobre um pacote
pip show django

# Verificar dependências quebradas
pip check
```

## Opções avançadas de instalação

```bash
# Instalar no diretório do usuário (sem permissão de admin)
pip install --user requests

# Instalar em modo editável (desenvolvimento local)
# Mudanças no código refletem imediatamente sem reinstalar
pip install -e .
pip install -e /caminho/para/meu-pacote

# Instalar sem usar o cache local
pip install --no-cache-dir tensorflow

# Instalar a partir de um repositório Git
pip install git+https://github.com/usuario/repo.git
pip install git+https://github.com/usuario/repo.git@v1.2.3

# Instalar a partir de um arquivo local
pip install ./dist/meu_pacote-1.0.0-py3-none-any.whl

# Instalar sem dependências
pip install --no-deps meu-pacote
```

## Gerenciando dependências com requirements.txt

O arquivo `requirements.txt` é a forma tradicional de declarar dependências de um projeto Python:

```bash
# Gerar requirements a partir do ambiente atual
pip freeze > requirements.txt

# Instalar todas as dependências do arquivo
pip install -r requirements.txt

# Instalar dependências de desenvolvimento separadamente
pip install -r requirements-dev.txt
```

Exemplo de `requirements.txt` bem estruturado:

```
# Dependências de produção
django==4.2.7
djangorestframework==3.14.0
psycopg2-binary==2.9.9
gunicorn==21.2.0

# requirements-dev.txt
-r requirements.txt
pytest==7.4.3
black==23.11.0
mypy==1.7.1
```

## pip-tools: dependências determinísticas

O **pip-tools** é um conjunto de utilitários para gerenciar dependências de forma mais robusta. Ele separa as dependências diretas das dependências transitivas (dependências das dependências):

```bash
pip install pip-tools

# requirements.in — apenas suas dependências diretas
# django>=4.2
# requests
# celery

# Compilar: resolve e fixa TODAS as versões (diretas + transitivas)
pip-compile requirements.in
# gera requirements.txt com versões fixas e hashes

# Sincronizar o ambiente com o arquivo compilado
pip-sync requirements.txt
```

O `pip-compile` gera um `requirements.txt` que inclui comentários indicando por que cada pacote está presente, tornando as dependências completamente auditáveis.

## Configuração com pip.conf

O pip pode ser configurado globalmente ou por projeto por meio de arquivos de configuração:

```ini
# ~/.config/pip/pip.conf (Linux/macOS)
# %APPDATA%\pip\pip.ini (Windows)

[global]
# Usar um mirror nacional (mais rápido no Brasil)
index-url = https://pypi.org/simple/

# Timeout em segundos
timeout = 60

# Não confirmar desinstalação
yes = true

[install]
# Sempre instalar no usuário por padrão
user = true
```

Para projetos com registro privado (Artifactory, Nexus, AWS CodeArtifact):

```ini
[global]
extra-index-url = https://usuario:senha@meu-registry.empresa.com/simple/
```

## Segurança: verificação de hashes

Para garantir que os pacotes instalados são exatamente os esperados (proteção contra ataques de supply chain), use verificação de hash:

```bash
# Instalar com verificação de hash
pip install --require-hashes -r requirements.txt
```

O `requirements.txt` com hashes fica assim (gerado automaticamente pelo pip-tools):

```
requests==2.31.0 \
    --hash=sha256:58cd2187423839... \
    --hash=sha256:942c5a758f98d...
```

Outra boa prática de segurança é auditar pacotes instalados em busca de vulnerabilidades conhecidas:

```bash
pip install pip-audit
pip-audit
```

## Erros comuns e suas soluções

```bash
# Erro: externally-managed-environment (Python 3.11+)
# Solução: use um ambiente virtual ou --break-system-packages (não recomendado)
python3 -m venv .venv && source .venv/bin/activate

# Erro: pip: command not found
python3 -m ensurepip --upgrade

# Erro: SSL certificate verify failed
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org requests

# Erro: versão incompatível de dependência
pip install "pacote-a==1.0" "pacote-b==2.0"
# se conflito, use um resolver como poetry ou uv

# Erro: permissão negada
pip install --user requests  # instala no diretório do usuário
```

## Alternativas modernas ao pip

O ecossistema Python evoluiu e existem ferramentas que vão além do pip:

**Poetry:** gerencia dependências, ambientes virtuais e publicação em um único fluxo. Usa `pyproject.toml` como único arquivo de configuração. Resolve conflitos de dependência de forma mais sofisticada.

**pipx:** instala ferramentas CLI Python em ambientes isolados automaticamente. Ideal para instalar Black, pytest, mypy e outras ferramentas de linha de comando sem poluir o ambiente global.

**uv:** gerenciador de pacotes escrito em [Rust](https://rustlang.com.br/), lançado pela Astral em 2024. É de 10 a 100 vezes mais rápido que o pip e está se tornando o padrão da indústria rapidamente.

```bash
# pipx — ferramentas CLI isoladas
pipx install black
pipx install httpie
black --version  # disponível globalmente

# uv — substituto ultrarrápido do pip
pip install uv
uv pip install django           # sintaxe compatível com pip
uv pip sync requirements.txt    # sincronização de ambiente
uv venv                         # criar ambiente virtual
```

## Boas práticas com pip

Sempre use pip **dentro de um ambiente virtual** para evitar conflitos entre projetos e não poluir o Python do sistema. Fixe versões das dependências para garantir reprodutibilidade. Use `pip check` periodicamente para identificar incompatibilidades. Mantenha o pip atualizado com `pip install --upgrade pip`. Para projetos novos, considere usar `uv` ou `Poetry` como alternativas mais modernas e robustas.

## Termos Relacionados

- [Python](/glossario/python/) - A linguagem de programação
- [Virtualenv](/glossario/virtualenv/) - Ambientes virtuais Python
- [Pacote](/glossario/pacote/) - Estrutura e distribuição de código
