Catégories
Gestion de projet Langage

Promouvoir son module python avec Pypi

Zourite est à un stade encore immature mais peut être une vitrine de ce que sera l’application. Comme tout application Maemo, sa place serait dans le dépot extra-dev afin qu’elle puisse être installée depuis le gestionnaire d’application du terminal. Hélas la création de compte sur le site de dev de maemo.org (le garage) semble ne pas fonctionner. De plus, l’intégration d’un développent au processus de build du garage n’est pas trivial.

Heureusemenr que Zourite est écrite en python si bien qu’elle peut bénéficier de l’index central des modules. Le site Pypi est un dépot de module (sorte de repo pour les programmes python). Il suffit de s’inscrire pour disposer d’un couple identifiant/mot de passe et pouvoir rendre publique son module.

Les contraintes sont minimes et vont d’ailleurs dans le bon sens. Pypi oblige en effet d’avoir un setup.py bien écrit avec des attributs standardisés comme la plateforme ou la licence du module. Les bénéfice en terme de visibilité en valent la chandelle.

Catégories
Gestion de projet

Packaging d’application python sous maemo 5

Dans le monde java, le packaging d’application est dicté par les standard java. On fait des JAR, des WAR, des EAR… L’ecosystème étant borné par la JVM et le conteneur (web ou ejb), la question du livrable ne se pose guère. Mais en python sous linux comment fait-on ?

La première idée est de générer un paquet pour la distribution cible. En l’occurence il s’agissait de l’application Zourite pour N900. On s’oriente donc vers la création de paquet debian. La création de paquet peut se faire via l’IDE Esbox. Cependant cela n’est pas si simple et un ignorant en packaging linux-debian n’y arrive pas sans faire un petit tour sur le site de debian pour se rendre compte que la création de paquet s’apparante à la création de distribution et que c’est un rôle distinct de celui de développeur d’application.

Heureusement que python (à ma grande surprise pour un vieux langage) dispose d’un écosystème riche à la java. Python inclut un mecanisme de création de livrable par le biais du fameux fichier setup.py. Un détour par la documentation en ligne et un peu de persévérence permet d’arriver à ses fins.

Le fichier setup.py contient la description du paquet python. Il est conseillé d’avoir au préalable organisé les sources du projet en modules dans un paquet dédié. Cela permettra d’embarquer tous les fichiers dans le paquet (répertoire) d’installation. Le fichier setup.py peut installer également des scripts de lancement du programme python. Ces scripts sont eux-même des script python qui pourront changer le répertoire courant du processus pour se rendre dans le répertoire du paquet de l’application afin que l’execution se passe comme en développement.

Voici un exemple de fichier setup.py:

# -*- encoding: UTF-8 -*-
'''
Created on 30 mars 2010

@author: thierry
'''
from distutils.core import setup
setup(name='zourite',
version='0.1.0',
package_dir = {'': 'src'},
packages=['zourite',
'zourite.common',
'zourite.core',
'zourite.gui',
'zourite.plugin',
'zourite.plugin.gmail',
'zourite.plugin.linkedin'],
scripts=['scripts/zourite','scripts/zourite-setup'],
package_data={'zourite': ['*.png']},
author='Thierry Bressure',
author_email='thierry@bressure.net',
maintainer='Thierry Bressure',
maintainer_email='zourite@bressure.net',
url='http://blog.zourite.bressure.net',
download_url='http://zourite.bressure.net',
description='Zourite Professional Networking Application for N900',
long_description='Zourite is a client for professional Network like LinkedIn. You can stay connected to your contacts and manage you network.',
classifiers=[
'Development Status :: 1',
'Environment :: Hildon',
'Environment :: Maemo',
'Intended Audience :: End Users/Desktop',
'Intended Audience :: Developers',
'License :: OSI Approved :: LGPL',
'Operating System :: Maemo :: Maemo 5',
'Programming Language :: Python',
'Topic :: Communications :: Email',
'Topic :: Office/Business',
],

)