Comment empaqueter votre code Python

  • FrançaisFrançais



  • Vous avez passé des semaines à perfectionner votre code. Vous l’avez testé et envoyé à des amis développeurs proches pour une assurance qualité. Vous avez posté tout le code source sur votre serveur Git personnel et vous avez reçu des rapports de bogues utiles de quelques courageux premiers utilisateurs. Et maintenant, vous êtes prêt à rendre votre code Python accessible au monde entier.

    Et c’est à ce moment-là que ça vous frappe. Vous n’avez aucune idée de comment livrer le produit.

    Livrer du code à sa cible est un gros problème. C’est toute une branche du développement logiciel, c’est le “D” en CI/CD, et pourtant beaucoup de gens oublient tout, au moins jusqu’à la fin. J’ai écrit des articles sur Autotools et Cmake, mais certains langages ont leurs propres méthodes pour vous aider à rendre votre code facilement accessible aux utilisateurs. Pour Python, un moyen courant de fournir du code aux utilisateurs est d’utiliser setuptools.

    Installer les outils de configuration

    Le moyen le plus simple d’installer et de mettre à jour setuptools est avec pip:

    $ sudo python -m pip install --upgrade setuptools

    Exemple de bibliothèque

    Créez une bibliothèque Python simple appelée myhellolib pour un exemple de code nécessitant un emballage. Cette bibliothèque accepte une chaîne puis imprime la chaîne en majuscules.
    Il s’agit de deux lignes de code, mais la structure du projet est importante, alors créez d’abord l’arborescence :

    $ mkdir -p myhellolib.git/myhellolib

    Pour confirmer que ce projet est une bibliothèque importable (un “module” Python), créez le fichier vide __init__.py dans le répertoire code, accompagné du fichier contenant le code :

    $ touch myhellolib.git/myhellolib/__init__.py
    $ touch myhellolib.git/myhellolib/myhellolib.py

    Dans le myhellolib.py fichier, entrez ce code Python simple :

    def greeter(s):
        print(s.upper())

    C’est la bibliothèque écrite.

    Essaye-le

    Avant de l’emballer, testez votre bibliothèque. Créer un myhellolib.git/test.py fichier et entrez ce code :

    import myhellolib.myhellolib as hello

    hello.greeter("Hello Opensource.com.")

    Exécutez le script :

    $ cd myhellolib.git
    $ python ./test.py
    HELLO OPENSOURCE.COM

    Cela fonctionne, alors maintenant vous pouvez l’emballer.

    Outils de configuration

    Pour packager un projet avec setuptools, vous devez créer un .toml identification de fichier setuptools comme système de construction. Placez ce texte dans un fichier appelé myhellolib.toml dans le répertoire de votre projet :

    [build-system]
    requires = ["setuptools", "wheel"]
    build-backend = "setuptools.build_meta"

    Ensuite, créez un fichier appelé setup.py, contenant des métadonnées sur votre projet :

    from setuptools import setup

    setup(
        name='myhellolib',
        version='0.0.1',
        packages=['myhellolib'],
        install_requires=[
            'requests',
            'importlib; python_version == "3.8"',
        ],
    )

    Croyez-le ou non, c’est toute la configuration setuptools a besoin. Votre projet est prêt pour l’emballage.

    Empaqueter Python

    Pour créer votre package Python, vous avez besoin d’un constructeur. Un outil commun est build, que vous pouvez installer avec pip:

    $ python -m pip install build --user

    Construisez votre projet :

    $ python -m build

    Après quelques instants, la construction se termine et il y a un nouveau répertoire dans votre dossier de projet appelé dist. Ce dossier contient un .tar.gz et un .whl déposer.
    Votre tout premier package Python ! Voici ce que chacun contient :

    $ tar --list --file dist/myhellolib-0.0.1.tar.gz
    myhellolib-0.0.1/
    myhellolib-0.0.1/PKG-INFO
    myhellolib-0.0.1/myhellolib/
    myhellolib-0.0.1/myhellolib/__init__.py
    myhellolib-0.0.1/myhellolib/myhellolib.py
    myhellolib-0.0.1/myhellolib.egg-info/
    myhellolib-0.0.1/myhellolib.egg-info/PKG-INFO
    myhellolib-0.0.1/myhellolib.egg-info/SOURCES.txt
    myhellolib-0.0.1/myhellolib.egg-info/dependency_links.txt
    myhellolib-0.0.1/myhellolib.egg-info/requires.txt
    myhellolib-0.0.1/myhellolib.egg-info/top_level.txt
    myhellolib-0.0.1/setup.cfg
    myhellolib-0.0.1/setup.py

    $ unzip -l dist/myhellolib-0.0.1-py3-none-any.whl 
    Archive:  dist/myhellolib-0.0.1-py3-none-any.whl
    Name
    ----
    myhellolib/__init__.py
    myhellolib/myhellolib.py
    myhellolib-0.0.1.dist-info/METADATA
    myhellolib-0.0.1.dist-info/WHEEL
    myhellolib-0.0.1.dist-info/top_level.txt
    myhellolib-0.0.1.dist-info/RECORD
    -------
    6 files

    Le rendre disponible

    Maintenant que vous savez à quel point il est facile d’emballer votre package Python, vous pouvez soit automatiser le processus à l’aide de hooks Git, de webhooks GitLab, de Jenkins ou d’un outil d’automatisation similaire. Vous pouvez même télécharger votre projet sur PyPi, le référentiel populaire pour les modules Python. Une fois sur PyPi, les utilisateurs peuvent l’installer en utilisant pip, de la même manière que vous avez installé setuptools et build pour cet article !

    Ce n’est pas souvent la première chose à laquelle vous pensez lorsque vous vous asseyez pour développer une application ou une bibliothèque, mais l’empaquetage du code est un aspect important de la programmation. Les développeurs Python ont beaucoup réfléchi à la façon dont les programmeurs peuvent rendre leur travail accessible au monde, et cela ne devient pas beaucoup plus simple que setuptools. Essayez-le, utilisez-le et continuez à coder en Python !

    Source

    N'oubliez pas de voter pour cet article !
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading...

    Houssen Moshinaly

    Rédacteur web depuis 2009 et webmestre depuis 2011.

    Je m'intéresse à tous les sujets comme la politique, la culture, la géopolitique, l'économie ou la technologie. Toute information permettant d'éclairer mon esprit et donc, le vôtre, dans un monde obscur et à la dérive.

    Je suis l'auteur de plusieurs livre

    Pour me contacter personnellement :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée.