0Pricing
Python Academy · Aula

Publicação com twine

Envie para PyPI

Publicação com twine é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.

A etapa final

Você criou artefatos em dist/. A última etapa é enviá-los ao PyPI para que o mundo possa executar pip install no seu pacote. A ferramenta padrão para isso é o twine.

O twine envia os artefatos com segurança por HTTPS e os valida antes do envio.

Instalando o twine

Instale-o com pip install twine. É uma ferramenta pequena e especializada: sua função é apenas validar e enviar os arquivos em dist/. Ela não compila nada.

Primeiro, o TestPyPI

Existe um ambiente isolado separado, o TestPyPI, para ensaiar os envios. Publique nele primeiro para identificar problemas sem poluir o índice real. Os nomes e as versões no TestPyPI são independentes do PyPI.

Envie com twine upload --repository testpypi dist/*.

Verificação antes do envio

twine check dist/* valida se os metadados e a descrição longa serão exibidos corretamente no PyPI. Execute esse comando sempre; caso contrário, uma descrição quebrada do README poderá aparecer como texto simples na página do seu projeto.

files = ['mytool-0.1.0.tar.gz', 'mytool-0.1.0-py3-none-any.whl']
for f in files:
    status = 'PASSED' if f.endswith(('.gz', '.whl')) else 'SKIP'
    print('check', f, '->', status)

Tokens de API, não senhas

Autentique-se com um token de API da sua conta do PyPI, não com sua senha. Use __token__ como nome de usuário e o token, que começa com pypi-, como senha. Os tokens podem ter escopo limitado a um único projeto e ser revogados a qualquer momento.

username = '__token__'
token = 'pypi-AgEIcHl...'
print('Username:', username)
print('Token starts with:', token[:5])
print('Never commit the token to git')

Armazenando credenciais

Evite redigitar os tokens armazenando-os em um arquivo ~/.pypirc ou em variáveis de ambiente (TWINE_USERNAME, TWINE_PASSWORD). Mantenha esse arquivo fora do controle de versão e permita que somente você o leia.

Enviando para o PyPI

Quando tudo estiver certo no TestPyPI, publique de verdade com twine upload dist/*. Em poucos instantes, seu pacote poderá ser instalado no mundo todo. Não há como desfazer: você não poderá enviar novamente a mesma versão depois de excluí-la.

As versões são imutáveis

O PyPI nunca permite substituir uma versão publicada. Se você encontrar um erro depois da publicação, deverá lançar uma nova versão, por exemplo, incrementando a versão de correção. Incorpore essa regra ao seu fluxo de trabalho para nunca ficar sem saída.

published = {'1.0.0', '1.0.1'}
new_version = '1.0.1'
if new_version in published:
    print(new_version, 'already on PyPI - bump and rebuild')
else:
    print(new_version, 'is free to upload')

Verifique a instalação

Depois do envio, confirme se tudo funciona: crie um ambiente virtual novo e execute pip install mytool; em seguida, importe o pacote. A instalação em um ambiente limpo identifica arquivos ausentes e erros de dependência que a compilação não detectou.

Publicação confiável

Projetos modernos podem dispensar tokens manuais com a publicação confiável: o PyPI autentica diretamente um fluxo de trabalho de CI, como o GitHub Actions, por meio do OpenID Connect. Nenhum segredo de longa duração é armazenado em lugar algum, o que é mais seguro.

O twine ainda faz o envio, mas as credenciais têm curta duração e são emitidas durante a execução.

Automatizando lançamentos

Uma configuração comum inicia um lançamento quando você envia uma tag do git, como v1.0.0. O fluxo de trabalho de CI compila, executa twine check e faz o envio automaticamente. Criar uma tag passa a ser a única ação necessária para publicar uma versão.

Isso mantém os lançamentos consistentes e elimina erros de envio manual.

Verificação rápida

Teste seus conhecimentos sobre publicação.

Recapitulação

Você publicou um pacote:

  • pip install twine, depois twine check dist/*
  • Faça um ensaio no TestPyPI antes do envio real
  • Autentique-se com um token de API com escopo definido (__token__), nunca com uma senha
  • twine upload dist/* publica o pacote; as versões são imutáveis, portanto incremente a versão para corrigir erros
  • Verifique com um pip install em um ambiente limpo

Perguntas Frequentes

A aula “Publicação com twine” é grátis?

Sim — o texto completo de “Publicação com twine” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.

O que vou aprender em “Publicação com twine”?

Envie para PyPI Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Python Academy?

Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Publicação com twine”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Python Academy?

Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Estrutura do projeto e pyproject.toml
  2. Compilação com build
  3. Versionamento e metadados
  4. Publicação com twine
← Voltar para Python Academy