Packaging en Python

publicité
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.
Téléchargement