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 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:
pippode apontar para Python 2 ou Python 3, dependendo da configuração do sistemapip3aponta 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:
# 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
# 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
# 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:
# 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):
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:
# ~/.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):
[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:
# 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:
pip install pip-audit
pip-audit
Erros comuns e suas soluções
# 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, 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.
# 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 - A linguagem de programação
- Virtualenv - Ambientes virtuais Python
- Pacote - Estrutura e distribuição de código