[Python] importer fichier d'un autre dossier

Résolu/Fermé
naycos - 16 août 2007 à 19:57
 FrViPofm - 13 juin 2011 à 23:15
Bonjour,

Je débute en python, et je ne sais pas comment inclure une classe décrite dans un fichier qui se trouve dans un autre dossier.

Si je fais : import MaClasse et que le fichier nommé MaClasse.py se trouve dans le même dossier, pas de problème.

En revanche si le fichier se trouve dans un autre dossier, ça ne marche pas.

exemple : import mondossier/MaClasse --> pas bon !

Je ne sais pas comment pointer correctement sur le fichier, ou comment définir les dossiers dans lesquels l'appli doit chercher les fichiers à inclure.

Quelqu'un pourrait-il m'expliquer le principe ??

Merci..

3 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
17 août 2007 à 12:04
Pour ce que je connais, il y a trois choses qui jouent: la variable d'environnement PYTHONPATH, la variable sys.path et les fichiers __init__.py

Dans PYTHONPATH tu peux mettre les dossiers ou python ira chercher les fichier à importer. Parfois cette variable est déjà définie, parfois pas. Si elle existe déjà il faut rajouter les dossiers que tu veux mais ne pas détruire les anciens. Les différents dossiers sont séparés par des deux-points.
Voici la syntaxe: PYTHONPATH=c:\machin:c:\autre_chemin

La variable sys.path (il faut importer sys pour l'utiliser) permet de modifier dynamiquement le pythonpath lors de l'excution d'un script. C'est une liste donc on utilise append pour ajouter un chemin.

Lorsque tu fais
import bidule
Et que bidule est un dossier contenu par l'un des dossiers du PYTHONPATH, alors python va chercher un fichier nommé __init__.py et va l'executer. S'il n'existe pas alors bidule ne sera pas considéré comme un module. Dans ce fichier tu peux en profiter pour faire des imports en raccourcis avec from prout import truc

C'est expliqué par ici: http://diveintopython.adrahon.org/xml_processing/packages.html
23