IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

importer plusieurs modules python


Sujet :

Python

  1. #1
    Membre à l'essai Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 17
    Points
    17
    Par défaut importer plusieurs modules python
    Bonjour, je cherche a importer tous les modules d'une librairie que j'ai créé. Je m'explique :

    Organisation des fichiers et dossiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    / Dossier_parent
     
         Programme_principale.py
         Programmes/
     
              Programme_1/
     
                   Programme_1.py
     
              Programme_2/
     
                   Programme_2.py
     
         Librairie/
     
              Module_1.py
              Module_2.py
              Module_3.py
    Mon programme principale ouvre une fenêtre.
    Avec cette fenêtre, je choisi si je lance le programme_1 ou programme_2.
    Les le programme_1 et programme_2 ont besoin des fonctions présentes dans module_1 , module_2 et module_3.

    Il faudrait que j'importes dès le lancement du programme_principale toutes les fonctions de tous les modules.

    Comment faire ?
    merci d'avance pour une réponse.
    Peace

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 442
    Points : 37 034
    Points
    37 034
    Par défaut
    Salut,

    Citation Envoyé par luclucdu38 Voir le message
    Il faudrait que j'importes dès le lancement du programme_principale toutes les fonctions de tous les modules.

    Comment faire ?
    Il sera bien de commencer par lire le Python tutorial concernant les modules.

    - W

  3. #3
    Membre chevronné
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2013
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 485
    Points : 2 151
    Points
    2 151
    Par défaut
    Une piste de recherche: La magie des fichiers __init__.py

  4. #4
    Membre à l'essai Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Merci j'ai trouvé, mais le problème est que mes modules ainsi que mes programme devrons être très facilement modifiables aussi bien par leur nom que par leur nom de fonction.

    Il est très pénible de rajouter dans le programme principale
    from X.X import *
    from X.Y import *
    from Y.X import *
    from Y.Y import *

    n'existe-t-il pas une manière de dire : importer tous les modules qui sont dans ce dossier ainsi que tous les sous-dossiers et tous les sous-sous-dossiers....etc
    Sous forme de boucle ?

    -----------------------

    J'aurais encore une autre question.

    J'ai un module qui doit ouvrir des images, mais les images ne sont pas toutes au même endroit.

    Est ce que dans mon fichier __init__.py je peux :
    - Importer toutes les importer / ouvrir / charger
    - Les récupérer a l'aide de mon module sans que celui-ci me demande : Ou est rangé cette photos ? Ou dois-je chercher ?

  5. #5
    Membre à l'essai Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Et même une troisième question, je suis désolé, je ne m'y connais vraiment pas encore à 100% et je ne trouve pas sur internet.

    Dans mon fichiers programmes_1.py
    Est-t-il possible de mettre une fonction def __init__() qui va par la suite lancer une autre fonction...

    Le truc étant que : les noms de fichiers.py peuvent changer mais pas leur contenu.
    Il faudrait que mon programme_principal dise : lire la fonction __init__() du fichier qui s'appelle actuellement xxx.py

  6. #6
    Membre régulier
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 75
    Points : 103
    Points
    103
    Par défaut
    Bonsoir,

    C'est pas encore de ton niveau et faudrait que tu suives une méthode pour t'y familiariser petit à petit.
    Mais pour revenir à ce que tu demandes dans ton dernier post, il y a les class qui y font référence.

  7. #7
    Membre à l'essai Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Bonsoir

    Oui je sais mais le truc c'est que il faudrait mettre une classe différente dans chaque programme et donc a partir du programme principal mettre Classe_programme_1() ou Classe_programme_2()... (étant actuellement définit par une variable) je fais actuellement

    si variable = 0 : class_1()
    si variable = 1 : class_2()

    Or si j'ai 100 programmes différents (donc 100 class différentes) ça va être pénible de plus que je devrais ajouter des lignes de code dans mon programme principal pour chaque programme crée.

    C'est aussi la raison de ma question précédente sur les imports.

    Il est pas possible de lui dire : lancer la seul est unique class de ce fichier qui ce trouve dans tel répertoire.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 442
    Points : 37 034
    Points
    37 034
    Par défaut
    Citation Envoyé par luclucdu38 Voir le message
    Or si j'ai 100 programmes différents (donc 100 class différentes) ça va être pénible de plus que je devrais ajouter des lignes de code dans mon programme principal pour chaque programme crée.
    Si vous aviez écrit 100 programmes différents, vous les auriez peut être rangés dans 100 sous répertoires différents du répertoire "mes_programmes". Chacun des 100 répertoires contiendrait un script __main__.py qui serait le point d'entrée à appeler.
    Pour avoir la liste de... il suffirait de parcourir l'arborescence de "mes_programmes".
    Et si un répertoire avec des sous-répertoires vous semble trop rigide vous pourriez ajouter une indirection supplémentaire: vous stockez le chemin absolu de chaque programme dans une base de données avec le script "point d'entrée".

    Donc quelque part, c'est un problème d'organisation et de nommage de fichiers...
    Les modules ne sont là que pour vous permettre d'organiser un programme (et non des programmes).

    - W

  9. #9
    Membre à l'essai Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    En fait, vue que dans ma fonction principale je connais l'emplacement du fichiers dont j'ai besoin, je peux tout simplement le lancer en temps que script avec un argument.

    Par contre, ni :

    python fichier.py

    execfile('fichier.py')

    exec(open('fichier.py').read())

    Ne marchent (n'arrivent à lire le fichier.py).

    Du plus open() me demande un deuxième argument sous forme d'entier. Avant, cette fonction marchait très bien et la...grand mystère...

    EDIT : il existe deux fonction open()
    io.open()
    os.open()
    il faut utiliser io

  10. #10
    Membre à l'essai Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    bonjour,
    J'ai de nouveau un problème... et je patine de nouveau, vos réponses précédente m'on été très utile et j'ai réglé la plupart de mes problème. Je vous remercie pour cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    / Dossier_parent
     
         __init__.py
         Programme_principale.py
     
         Programmes/
     
              __init__.py
              Programme_1.py
              Programme_2.py
     
         Librairie/
     
              __init__.py
              Module_1.py
              Module_2.py
              Module_3.py
    Ce que fait mon programme principale

    1) Importation de tous les modules dans librairie

    2) Le programme principale lance le programme 1 en script.

    3) Le programme 1 utilise des modules dans Librairie.

    Le programme 1 ne trouve pas la fonction demandée dans librairie. Alors que tous les modules ont été importé dans le programme principale.
    Comment est-ce possible ? Pourrait on m'expliquer ?

    Les importer une fois, la première fois n'est il pas suffisant ?
    merci d'avance

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 442
    Points : 37 034
    Points
    37 034
    Par défaut
    Salut,
    Citation Envoyé par luclucdu38 Voir le message
    Les importer une fois, la première fois n'est il pas suffisant ?
    non: chaque .py (module) accèdera aux objets assignés à des variables "locales".
    Sans "import toto", pas de variable "toto" associée au module toto et aucun chemin pour accéder aux variables définies dans "toto".

    - W

  12. #12
    Membre à l'essai Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Donc dans programmes_1.py et programme_2.py je dois réimporter les modules voulus.

    En fait chaque fichier gère ces propres imports, ce n'est pas la "session python" (si je puis appeler ça comme ça) qui fait le fera pour tout le reste du programme !?

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 442
    Points : 37 034
    Points
    37 034
    Par défaut
    Citation Envoyé par luclucdu38 Voir le message
    Donc dans programmes_1.py et programme_2.py je dois réimporter les modules voulus.
    Python est construit pour que cela fonctionne ainsi.
    Soit vous apprenez à programmer avec Python en admettant ces choses là comme des règles avec lesquelles il faut faire, soit vous essayez de découvrir la logique et la cohérence de tout çà.

    Citation Envoyé par luclucdu38 Voir le message
    En fait chaque fichier gère ces propres imports, ce n'est pas la "session python" (si je puis appeler ça comme ça) qui fait le fera pour tout le reste du programme !?
    Soyez plus rigoureux, côté Python, un fichier n'est pas un objet Python un "module" oui. De même, une "session" Python a peut être un sens pour vous mais n'existe pas dans le langage Python. Après vous pouvez toujours essayer de représenter les choses de Python avec vos mots/concepts/... mais ce sont des choses à vous.

    - W

  14. #14
    Membre à l'essai Avatar de luclucdu38
    Homme Profil pro
    autre
    Inscrit en
    Avril 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Avril 2015
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    merci a vous tous pour vos reponses, tout marche comme il faut

Discussions similaires

  1. [pyinstaller] comment compiler un environnement python incluant des import de modules
    Par stefan.oyen dans le forum Déploiement/Installation
    Réponses: 3
    Dernier message: 28/04/2011, 14h02
  2. Réponses: 0
    Dernier message: 21/01/2011, 12h16
  3. Importation de module dans Python
    Par mikeduff dans le forum Bibliothèques tierces
    Réponses: 1
    Dernier message: 28/03/2009, 09h49
  4. [OC4J 9.0.2] plusieurs modules clients dans application.xml
    Par Mokhtar BEN MESSAOUD dans le forum Autres
    Réponses: 2
    Dernier message: 11/02/2005, 11h18
  5. probleme apache+module python sous windows
    Par gaussprodada dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 02/11/2004, 22h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo