Partage
  • Partager sur Facebook
  • Partager sur Twitter

impossible d'appeler un module depuis un autre

impossible d'appeler un module depuis un autre module

Sujet résolu
    7 juillet 2013 à 2:39:59

    Bonjour,

    Je me suis remis à la programmation après un peu plus d'un an d'arrêt et python m'a parut parfait pour reprendre tranquilement.

    Seulement sa fait 24 heures que je me prends la tête.

    J'ai terminé le cours sur les modules et packages et je me suis dit avant de passer à la suite autant faire un petit programme qui exploite bien ces fonctionnalitées.

    J'ai donc un dossier python, dans ce dossier un fichier main (principal qui appel les modules, packages...) et un dossier package qui contient les .... packages.

    Dans ce dossier packages deux fichiers (modules) :

    -saisie nombre qui transforme une saisie en nombre

    -table_addition qui montre la table d'addition du nombre saisie par l'utilisateur

    Dans le module table_addition j'importe le module saisie_nombre, quand j'exécute table_addition aucun problème.

    Par contre, depuis le fichier main, quand j'importe et exécute table_addition, python me dit:

    "problème" dans fichier package.table_addition ligne "tant" : no module named saisie_nombre.

    Savez-vous quel est le problème? Je pense qu'on ne peut donc pas importer et exécuter un module qui lui même appel et exécute un autre module, est-ce vrai?

    Merci d'avance pour vos réponse.

    • Partager sur Facebook
    • Partager sur Twitter
      7 juillet 2013 à 2:45:06

      Salut,

      Peux t-on voir ton code (du main et du table_addition) ?
      As-tu pensé à créer un fichier "__init__.py" dans ton dossier "packages" ?
      • Partager sur Facebook
      • Partager sur Twitter
        7 juillet 2013 à 5:35:23

        Merci pour ton retour, oui j'ai pensé au __init__.py dans le package

        L'aboressence des scripts est :

        /python/main.py

        /python/package/saisie_nombre.py

        /python/package/table_addition.py

        Voici le code:

        Main:

        #!/usr/bin/python3.3
        import package.table_addition
        import package.saisie_nombre
        package.table_addition.table_addition()

        module saisie_nombre:

        #!/usr/bin/python3.3
        def saisie_nb():    #fonction transforme saisie en nombre
        	saisie_nb = input()
        	saisie_nb=int(saisie_nb)
        	return saisie_nb
        

        module table_addition:

        #!/usr/bin/python3.3
        # -*- coding: utf-8 -*-
        
        import saisie_nombre
        
        def table_addition():
            print("saisissez un nombre pour afficher sa table d'addition")
            nombre_table = saisie_nombre.saisie_nb()
            print("jusqu'à quel nombre souhaitez vous voir la table?")
            max = saisie_nombre.saisie_nb()
            i=0
            while i<max :
                print(nombre_table, "+", i, "=", nombre_table+i)
                i += 1
        





        -
        Edité par TIBforever 7 juillet 2013 à 13:59:22

        • Partager sur Facebook
        • Partager sur Twitter
          7 juillet 2013 à 13:15:29

          Salut,

          Cela viens du # à la ligne 4, du module table_addition, tu as mis en commentaire l'importation, alors que tu utilise des fonctions de ton saisie_nombre.py !

          Tu peux tout à faire importer des modules emboîté, à condition que les importations de ces modules soit correct ! Ici, même si tu utilise ton fichier main comme principal, il faut fournir à table_addition.py le package saisie_nombre!

          Pour être clair, enlève le dièse =p !

          • Partager sur Facebook
          • Partager sur Twitter
            7 juillet 2013 à 14:04:54

            Oula c'est pas ça, j'avais mis le # pour troubleshooter mon problème, j'ai bien testé au départ sans le dieze.

            J'était sur que j'avait oublié d'enlever le code temporaire pour le poste  

            Enfin bref j'ai modifié mon entrée, sans erreur de code, tout est bien écrit comme dans le tuto mais sa marche pas.

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              7 juillet 2013 à 14:34:58

              Dans un package, les modules qui s'appels entre eux doivent soit utiliser des chemins relatifs ou des chemins absolu depuis l'entrée du package : from . import mymodule ou from mypackage import mymodule

              édit: La doc pourra surement mieux t'expliquer cela que moi. ;)

              -
              Edité par Anonyme 7 juillet 2013 à 14:41:47

              • Partager sur Facebook
              • Partager sur Twitter
                7 juillet 2013 à 23:42:21

                Trop fort PsycoPy c'est sa qui plantait, il faut mettre from . import mymodule ou from mypackage import mymodule.

                Merci vous deux pour votre aide.

                • Partager sur Facebook
                • Partager sur Twitter

                impossible d'appeler un module depuis un autre

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown