Skip to article frontmatterSkip to article content

Vous avez deux types de paquets Python

Dans le premier cas, la distribution est assez simple puisqu’elle ne dépend que de la version de Python. Le paquet peut s’installer sur n’importe quel système d’exploitation en copiant juste les fichiers Python au bon endroit.

Dans le cas de bout compilé, les choses se compliquent un peu, car il faut fournir des binaires et, par conséquent, il y a une dépendance au système d’exploitation, au compilateur utilisé... En d’autres termes, si vous souhaitez distribuer ce genre de paquet sur tous les systèmes d’exploitation, vous devez les avoir à votre disposition pour pouvoir créer les bons binaires.

Heureusement, vous n’êtes pas obligés d’avoir plusieurs machines pour réaliser cette opération. L’intégration continue peut grandement vous faciliter la vie comme nous le verrons à la fin de cette formation.

Les gestionnaires de paquets dans l’univers Python sont au nombre de deux : pypi et conda. Nous verrons dans la suite comment rendre disponible son application sur ces deux gestionnaires.

PyPi

Nous allons dans un premier temps nous intéresser à PyPi. Maintenant que nous avons un fichier pyproject.toml qui explique comment construire le package ainsi que ces dépendances, nous sommes en mesure de construire des distributions.

Dans PyPi, elles peuvent être de deux sortes

Archive et wheel

Maintenant que vous avez les différentes versions, vous pouvez les mettre sur PyPi pour que d’autres personnes puissent utiliser votre application.

twine

twine permet de mettre les distributions créées se trouvant dans le répertoire dist sur PyPi. Il existe deux sites

Avant d’utiliser twine, il est nécessaire de se créer un compte

Pour mettre l’ensemble des distributions sur

Une fois que vous avez effectué l’upload, vous pouvez rechercher votre application

conda

Il est également possible de mettre son package sur conda. Comme pour PyPi, il est nécessaire de se créer un compte pour pouvoir avoir sa propre channel (https://anaconda.org/).

Il est ensuite nécessaire d’installer différents outils pour pouvoir uploader vos fichiers.

conda install conda-build anaconda-client

Il est possible d’installer des packages qui ne sont pas forcément écrits en Python.

conda-forge est un endroit où l’on peut trouver ces packages.

Le but est d’écrire des recettes permettant de compiler le projet sur différentes plateformes (linux, mac OSX, windows).

Le processus de soumission peut être assez long, c’est pourquoi nous utiliserons notre propre channel dans la suite. Si vous souhaitez mettre vos applications sur conda-forge (ce qui est une très bonne idée, car cela offre plus de visibilité que sur sa propre channel), il suffit d’aller ici : https://conda-forge.org/docs/maintainer/00_intro.html.

Création d’une recette

Pour que conda puisse construire le binaire de votre application, il lui faut plusieurs fichiers que l’on retrouve généralement dans un répertoire recipes.

Nous ne verrons ici que l’écriture d’un fichier meta.yaml. Reprenons l’exemple de l’application calculator et regardons ce que ça donne

{% set name = "calculator" %}
{% set version = "0.1.1" %}

package:
  name: '{{ name|lower }}'
  version: '{{ version }}'

source:
  path: ../

build:
  number: 0
  script: python setup.py install

requirements:
  build:
    - python
    - setuptools
    - cython
  run:
    - python

test:
  imports:
    - calculator

about:
  home: http://github.com/gouarin/calculator
  license: MIT
  description: Simple calculator project

extra:
  recipe-maintainers: Loic Gouarin <loic.gouarin@gmail.com>

Une fois les fichiers du répertoire recipes sont écrits, il faut exécuter la commande suivante

conda build recipes

À la fin de la procédure, vous devriez voir où il a mis le package en local. Vous pouvez alors essayer de l’installer en faisant

conda install --use-local calculator

Uploader le paquet

Si tout s’est bien passé, vous pouvez à présent le mettre sur anaconda dans votre channel pour que d’autres puissent l’installer. Il vous faut pour cela anaconda-client.

conda install anaconda-client

Vous pouvez maintenant l’uploader.

anaconda upload /home/loic/miniconda3/conda-bld/linux-64/calculator-0.1.1-py36h585410b_0.tar.bz2

Références