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, depoistwine 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 installem 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
- Estrutura do projeto e pyproject.toml
- Compilação com build
- Versionamento e metadados
- Publicação com twine