Histoire de garder ça sous le coude et de le partager, voici un pense bête sur comment uploader un package sur PyPi.org.
Les prérequis
- Se créer un compte sur PyPi, mais également sur l’index de test. L’index de test permet de tester avant de pousser en production… Personnellement j’y ai le même login mais pas le même mot de passe.
- Avoir les bons outils d’installés :
sudo dnf install python3-wheel python3-setuptools
- Suivre les guidelines de packaging de PyPa, notamment la rédaction du setup.py en se basant sur le projet d’exemple de PyPa : pypa/sampleproject.
Le déploiement
- Créer les packages de manière classique avec python setup:
python3 setup.py sdist bdist_wheel
- Au lieu de passer par
python setup.py
pour uploader, utiliser Twine. Pour cela, commencer par l’installer bien entendu… Par contre, il y a eu pas mal de changement sur PyPi.org ces derniers temps. Je conseille donc d’installer la dernière version depuis PyPi :
pip3 install --user twine
Configurer votre fichier ~/.pypyrc
avec les 2 index, celui de test et celui de production:
[distutils]
index-servers =
pypi
pypitest
[pypi]
repository: https://upload.pypi.org/legacy/
username: MON_LOGIN
[pypitest]
repository: https://test.pypi.org/legacy/
username: MON_LOGIN
- Uploader et tester sur l’index de test :
twine upload dist/mon_package-2.0.0.tar.gz -r pypitest
- Si tout est OK, alors pousser sur l’index de production:
twine upload dist/mon_package-2.0.0.tar.gz -r pypi
Il existe des commandes pour que Twine stocke vos mots de passe dans un porte-clés, la documentation le décrit bien. Mais personnellement, sachant que Warehouse ne propose pas de 2FA comme NPM, devoir taper un mot de passe à chaque fois, qui plus est un mot de passe différent en test et en production, me semble le minimum de sécurité.
Guillaume Kulakowski: Uploader un package sur PyPi | Fedora Colombia le 5 juin 2018
[…] article Uploader un package sur PyPi est apparu en premier sur Guillaume Kulakowski’s […]