Uploader un package sur PyPi

Guillaume Kulakowski par Guillaume Kulakowski dans Python 5 juin 2018 1
Tags : pip PyPi Python
PyPI: Python Package Index

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

  1. 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.
  2. Avoir les bons outils d’installés :
sudo dnf install python3-wheel python3-setuptools
  1. 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

  1. Créer les packages de manière classique avec python setup:
python3 setup.py sdist bdist_wheel
  1. 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
  1. Uploader et tester sur l’index de test :
twine upload dist/mon_package-2.0.0.tar.gz -r pypitest
  1. 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é.

Rétrolien

[…] article Uploader un package sur PyPi est apparu en premier sur Guillaume Kulakowski’s […]

Commentaires

Jihaisse

De Jihaisse le 5 juin 2018

Il existe zest.releaser qui fait le boulot tout seul : https://github.com/zestsoftware/zest.releaser/

fullrelease power !

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. Apprenez comment les données de vos commentaires sont utilisées.