PROJET AUTOBLOG


Tiger-222

Archivé

Site original : Tiger-222

⇐ retour index

Déployez vos modules Python

mardi 22 octobre 2013 à 11:30
Python ou pas, il est vert !

Vous venez de terminer votre nouveau module Python ! Évidemment, vous l'avez testé dans tous les sens, et souhaitez le déployer vite fait, bien fait. Un module aisément installable, quelque soit le système d'exploitation, est appréciable pour tout le monde ☺

C'est là qu'entre en jeu pip. Je ne rentrerai pas dans les détails du fonctionnement de pip, d'autres les font très bien. Je m'attarderai plutôt sur la création des fichiers nécessaires ainsi que l'envoi au serveur.
Pour les pressés, voici un mémo des commandes :
$ python setup.py register
$ python setup.py sdist upload


Préparer la base


Vous avez sûrement déjà vu un de ces fameux setup.py, et bien c'est lui qui gère tout. Vous pouvez voir les projets MSS ou minibelt pour vous en inspirer ; voici un exemple tiré du module MSS :
# Import du bon module de gestion
try:
from distutils.core import setup
except ImportError:
from setuptools import setup

# Dans le fichier MANIFEST.in, on y liste les ficihers et dossiers à inclure (ou pas)
# dans l'archive qui sera déployée.
# Par défaut, seuls les fichiers module.py et setup.py sont inclus.
open('MANIFEST.in', 'w').write('\n'.join((
"include *.rst",
# un_dossier/*.py
# un_autre_fichier.py
# prune archives/ <-- ne pas inclure le dossier archives
)))

# En option, importez la version de votre module
from mss import __version__

# Le nom des clefs est assez explicite, on renseigne les infos principales du module
setup(
name='mss',
version=__version__,
author='Tiger-222',
py_modules=['mss'],
author_email='contact@tiger-222.fr',
description='A cross-platform multi-screen shot module in pure python using ctypes',
long_description=open('README.rst').read(),
classifiers=[
'Programming Language :: Python',
'Intended Audience :: Developers',
'Intended Audience :: Information Technology',
'License :: OSI Approved :: zlib/libpng License',
'Natural Language :: English',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Topic :: Multimedia :: Graphics :: Capture :: Screen Capture',
],
url='https://github.com/BoboTiG/python-mss'
)
Vous aurez remarquer la présence d'un certain README.rst (format ReStructuredText), il s'agit de la description complète du module (ses classes et méthodes, exemples, ...).
La liste des classifiers se trouve ici : List trove classifiers.

En passant, GitHub accepte les fichiers README.rst, pratique ! Et voici une visionneuse de fichiers RST : restview.


Le déploiement


Créer le dépôt


Ouvrez une console, rendez-vous dans le répertoire du projet, puis :
$ python setup.py register
running register
running check
We need to know who you are, so please choose either:
1. use your existing login,
2. register as a new user,
3. have the server generate a new password for you (and email it to you), or
4. quit
Your selection [default 1]:
Si vous n'avez pas encore de compte, prenez l'option 2, sinon la 1.

Si tout s'est bien passé, vous devriez avoir ce genre de message :
Registering mss to http://pypi.python.org/pypi
Server response (200): OK

Voilà, votre module est en ligne !


Envoyer le module


La page du module a été créée, mais aucun fichier n'est disponible en téléchargement. Cette commande génère une archive puis l'envoie au serveur :
$ python setup.py sdist upload
running sdist
running check
warning: sdist: standard file not found: should have one of README, README.txt

reading manifest template 'MANIFEST.in'
writing manifest file 'MANIFEST'
creating mss-0.0.2
making hard links in mss-0.0.2...
hard linking README.rst -> mss-0.0.2
hard linking mss.py -> mss-0.0.2
hard linking setup.py -> mss-0.0.2
creating dist
Creating tar archive
removing 'mss-0.0.2' (and everything under it)
Submitting dist/mss-0.0.2.tar.gz to http://pypi.python.org/pypi
Upload (200): OK
Emballé, c'est pesé !

Vous pouvez de suite installer le module fraîchement déployé : pip install mss !


Sources