Posez votre question Signaler

[Python] importer fichier d'un autre dossier [Résolu]

naycos - Dernière réponse le 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..
Lire la suite 

[Python] importer fichier d'un autre dossier »

6 réponses
Réponse
+7
moins plus
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
Ajouter un commentaire
Réponse
+7
moins plus
merci j'aime bien la solution dynamique

import sys
sys.path.append("C:\\Documents and Settings\\Administrateur\\Bureau")
from mon_module_qui_est_sur_le_bureau import *
...
Nellen - 9 nov. 2010 à 17:48
cette solution n'a rien de dynamique mon cher ami ;)
ulysse_didou- 11 nov. 2010 à 21:25
Toi qui est si fort apporte nous tes lumières pour une 3eme possibilité ...
Avec un exemple précis à l'appui.

Cordialement ...
FrViPofm - 13 juin 2011 à 23:15
sys.path.append('path/to/app') # *nix path
# équivalent de 'from modules import module', mais, pour le coup, dynamique
getattr(__import__(modules, globals(), locals(), [module], -1), module)
# voir la doc : http://docs.python.org/library/functions.html#__import__
Ajouter un commentaire
Réponse
+0
moins plus
Super, merci pour ta réponse, très complète. Maintenant j'y vois plus clair, et je sais vers où chercher pour approfondir la question.
Ajouter un commentaire
Ce document intitulé « [Python] importer fichier d'un autre dossier » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?