Serenata Toolbox no PyPI
Um roadmap para liberar um módulo no Python Package Index ;)
Eventualmente pessoas que desenvolvem software chegam num momento que possuem um projeto que pode ser empacotado e distribuído para a comunidade. Para quem programa em Python é comum rodar um pip install
— semelhante ao gem install
do Ruby e ao npm install
do Node — e instalar módulos Python disponíveis no PyPI. Pra quem não conhece, o PyPI é a casa mais famosa de pacotes Python, o index de pacotes Python.
Disclaimer: Originalmente a ideia aqui era mostrar o uso do TestPyPI antes do lançamento “de verdade”. Porém, como o PyPI está passando pela migração para a plataforma nova, o upload de arquivos para o TestePyPI ainda não está funcionando ;)
A primeira tentativa…
Não acertar logo de cara algo novo é completamente normal. Ouso dizer ainda que falhar é o esperado.
Programação orientada a erros — Ana Schwendler
O primeiro lançamento de um módulo Python que fiz falhou. Isso me fez rever os passos que executei e entendê-los melhor. Aprendi por exemplo, que alguns desses passos eram equivalentes.
Liberar esse módulo me fez entender melhor os passos que executei e também como eles se relacionam. Além disso, a migração para o novo PyPI trouxe uma série de melhorias e resolução de bugs para a plataforma.
Por onde começar
- Registre-se no novo site do PyPI.
- Instale o Twine. Existem outras formas de fazer o upload, porém o Twine irá facilitar muito essa parte do processo. Eu usei o
pip install twine
no ambiente virtual que uso no projeto. - Se já não possui um, crie o seu arquivo .pypirc na sua home. Assim como outros arquivos de configuração como o .bashrc e o .vimrc, esse arquivo irá conter algumas configurações que alguns comandos irão usar. O meu .pypirc está assim no momento:
[distutils]
index-servers=
pypitest
pypi[pypitest]
repository: https://test.pypi.org/legacy/
username: serenata
password: ***[pypi]
repository: https://upload.pypi.org/legacy
username: serenata
password: ***
Você pode também usar o exemplo encontrado na documentação do PyPI para criar o seu.
A verdadeira (ou quase isso) sequência de passos
1. Source distribution
Geralmente gerada pelo comando sdist
, source distributions são arquivos versionados que são utilizados para criar um build do seu módulo. Ele vai conter vários arquivos que são utilizados no lançamento. Quando o comando terminar sua execução, você poderá encontrar seu arquivo de distribuição dentro de uma pasta dist/ no seu diretório.
$ python setup.py sdist
2. Wheels
O arquivo wheel (.whl
) é um pacote que já teve o seu build feito. Então você não precisa passar pelo processo de build novamente para realizar a instalação daquele pacote isso torna a instalação do pacote mais rápida para o usuário. Se quiser, você pode ler mais sobre wheels na documentação de empacotamento.
$ python setup.py bdist_wheel --plat-name='any'
3. Registrando
Antigamente (ano passado =P) era necessário fazer um passo de registro. Com a migração esse passo não é mais necessário! o/
4. Upload
Depois desses dois passos executados é só usar o Twine para o upload:
$ twine upload dist/*
E prontinho! Pode ir lá conferir o lançamento da Serenata Toolbox.
Para acompanhar o projeto
Para saber mais sobre o que acontece no dia a dia do projeto, nos siga no Facebook e comece por aqui para contribuir com código.
Além disso você pode fazer com que a Operação Serenata de Amor continue à todo vapor. Também estamos aceitando doações pela carteira de Bitcoin 1Gbvfjmjvur7qwbwNFdPSNDgx66KSdVB5b.