Packaging en Python Konrad HINSEN Centre de Biophysique Moléculaire (Orléans) et Synchrotron Soleil (St Aubin) Python distutils Description des modules Python, modules C/Cython, scripts, fichiers documentation, ... l l a t s n .py i p u t e s hon compilation y p . b p u t se py p.py sdist n o th ld i u python setu pyt setup.py installation Documentation complète: http://docs.python.org/distutils/index.html packaging Arrangement des fichiers setup.py MANIFEST.in __init__.py toto_lib toto1.py toto_script toto2.py README Doc notice.pdf Cet arrangement n’est pas imposé par distutils ! setup.py from distutils.core import setup setup (name = "Toto", version = "1.0", description = "Un logiciel exceptionnel", author = "Konrad Hinsen", author_email = "[email protected]", url = "http://forge.cnrs.fr/toto", packages = ['toto_lib'], scripts = ['toto_script']) Voir exemple1 MANIFEST.in include README include Doc/*.pdf Sert à spécifier les fichiers non-exécutable à inclure dans la distribution. toto_script #!python from toto_lib.toto1 import a from toto_lib.toto2 import b print a + b Exercice: Installation et distribution Installez l’exemple Toto sur votre ordinateur (python setup.py install) et explorer les options (python setup.py help install). Préparez une distribution (python setup.py sdist) et vérifiez son contenu. Modules d’extension from distutils.core import setup, Extension setup (name = "Exponential", version = "0.1", nom du module ext_modules = [Extension('exp_cython', ['exp_cython.c'])]) liste des fichiers source Compilation pour développement et test: python setup.py build_ext --inplace Voir exemple2 Bibliothèques externes from distutils.core import setup, Extension import numpy.distutils.misc_util import sys numpy numpy_includes = numpy.distutils.misc_util.get_numpy_include_dirs() if sys.platform == 'win32': math_libraries = [] else: math_libraries = ['m'] libm sous Linux setup (name = "ArraySum", version = "0.1", ext_modules = [Extension('array_sum', ['Src/array_sum.c'], include_dirs=numpy_includes, libraries=math_libraries)]) Voir exemple3 Exercice: Préparation à la distribution L’exemple 2 (exponentielle) contient juste le minimum pour le développement et le test d’une module d’extension. Préparez-le à pour la distribution, en rajoutant un minimum de documentation. Mettez le code source dans un répertoire spécifique. Faites pareil pour l’exemple 3. Exercice avancé: Préparation à la distribution du simulateur du système solaire Préparez pour une distribution grand public le simulateur du système solaire que vous avez rencontré lors du TP “débogage Python”. Renseignez-vous dans la documentation des distutils (http:// docs.python.org/distutils/index.html) sur les possibilités de gestion du fichier de données lu par le programme. Modifiez le programme pour qu’il trouve ce fichier au bon endroit après installation.