Installation de modules python supplémentaires

Supposons que vous avez écris un module python contenant des classes ou des fonctions ou que vous en avez téléchargé un sur internet. Où devez vous le placer pour y avoir accès lorsque vous exécutez un programme python ou que vous utilisez le prompt de python ?

Lorsqu’on importe un module python avec l’instruction import ou from, python cherche le module correspondant dans une liste d’emplacements (de dossiers) défini dans la variable d’environnement PYTHONPATH. On peut connaître la liste de ces emplacements grâce à la variable path du module sys :

[Ger@kiwi:/home/Ger]> python
Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> for p in sys.path:
...     print(p)
... 
 
/home/moi/
/usr/lib/python2.6
/usr/lib/python2.6/plat-linux2
/usr/lib/python2.6/lib-tk
...
>>>

La variable sys.path est en fait une liste python. On voit, entre autre, que le dossier de travail (ici /home/Ger/) est contenu dans la variable sys.path. Une première solution pour importer dans un code python un module supplémentaire est donc de le placer dans le dossier de travail. Cependant cette solution n’est pas très agréable étant donné qu’il faudra recopier le module dans tous les dossiers ou vous en aurez besoin. Une seconde solution est de rajouter des éléments à la liste sys.path avant d’importer les modules :

import sys
sys.path.append("/home/moi/chemin/vers/mon/module/")
# importation de votre module
import mon_module

De façon plus automatique on peut ajouter des emplacements à la variable d’environnement PYTHONPATH. Voici quelques lignes en bash que vous pouvez ajouter à votre fichier .bashrc pour ajouter un ensemble de chemins de façon automatique. Ce petit script suppose que tous vos modules python supplémentaires sont enregistrés dans un même dossier et dans les sous dossier de ce dernier. Ce dossier nommé classDir est défini sur la première ligne du script qui ajoute simplement à la variable PYTHONPATH le dossier classDir et l’ensemble des dossiers qu’il contient. Voici le script :

# python : liste des dossiers contenant vos classes python
classDir="/home/moi/chemin/vers/mes/modules/"
liste=`ls $classDir`
monpath="$classDir:"
for dossier in $liste
do
    monpath="$classDir$dossier:$monpath"
done
export PYTHONPATH=$PYTHONPATH:$monpath

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

2 × = 4