Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme de module

Sujet résolu
    27 octobre 2016 à 15:30:07

    bonjour,

      j’apprends le python pour les cours et en essayant le code sur la partie des modules je me suis confronté a une erreur de type "no module name"

    en effet jai crée deux fichier python, un premier avec mes fonctions et l'autre avec le code qui les utilises, les deux dans le même dossier et lorsque j'importe les fonctions il me sort une erreur : "no module name..."

    j'ai deja fait des recherches mais jamais quelque chose de précis certains parlent du PATH d'un fichier __init__.py, mais je n'arrive pas a m'en sortir de plus que les solutions sont pratiquement toutes sur linux or malheureusement j'utilise W7.

    si une âme charitable pouvais venir a mon secours, merci

    • Partager sur Facebook
    • Partager sur Twitter
      27 octobre 2016 à 15:58:48

      bonjour, c'est parce que le chemin courant n'est pas celui de ton dossier

      tu utilises quoi comme IDE (le logiciel où tu code) ?

      Pour que ca fonctionne récupère le chemin de ton dossier et rajoute au début de ton programme:

      import os
      os.chdir("C:/le/chemin/jusqua/ton/dossier")
      #attention à utiliser soit '/' ou '\\' mais pas '\' tout seul pour séparer les dossiers



      -
      Edité par WexyR 27 octobre 2016 à 15:59:32

      • Partager sur Facebook
      • Partager sur Twitter
      Si je suis tête en l'air, c'est par habitude de viser le sommet
        27 octobre 2016 à 16:06:51

        Résumons... tu as 2 fichiers dans le même répertoire, à savoir my_functions.py et my_software.py. Dans le fichier my_software.py, tu veux utiliser les fonctions/classes/... présentes dans le fichier my_functions.py. J'ai bon jusque là ?

        Si c'est bien le cas, tu peux importer tes fonctions de 2 méthodes différentes à l'aide d'une ligne de code dans le fichier my_software.py !

        La première est d'importer le fichier my_functions.py comme un module. Exemple :

        import my_functions
        
        # appel de la fonction toto du module my_functions
        my_functions.toto()

        ou bien (si le nom du module est trop long, comme dans ce cas) :

        import my_functions as fct # on donne un nom au module
        
        # appel de la fonction toto du module my_functions
        fct.toto()

        La deuxième est d'importer une ou toutes les fonctions du module my_functions. Exemples :

        from my_functions import toto, tutu # import des fonctions toto et tutu du module my_functions
        
        # appel de la fonction toto du module my_function
        toto()
        
        

        pour l'import d'une ou plusieurs fonctions d'un module, ou bien

        from my_functions import * # import de toutes les fonctions du module my_functions
        
        # appel de la fonction toto du module my_function
        toto()
        
        

        pour l'import de toutes les fonctions d'un module.

        • Partager sur Facebook
        • Partager sur Twitter
        Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
          27 octobre 2016 à 16:10:15

          @oowaka, je crois que c'est ce qu'il essaie de faire, sauf que le programme ne trouve pas le module du coup il reçoit:

          ImportErrror: no module named 'my_functions'

          Chez moi ca fait la même avec Pyzo par exemple..

          -
          Edité par WexyR 27 octobre 2016 à 16:10:25

          • Partager sur Facebook
          • Partager sur Twitter
          Si je suis tête en l'air, c'est par habitude de viser le sommet
            27 octobre 2016 à 16:15:32

            Au temps pour moi... Dans quel cas, pourquoi lorsque tu lances ton fichier principal, tu ne te places pas dans le répertoire de ce dit fichier ? Ou bien utilises la méthode de WexyR ! Même si un petit os.path.join(rep0,rep1,rep2) serait plus propre pour éviter le problème des /, \, ... !

            • Partager sur Facebook
            • Partager sur Twitter
            Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
              27 octobre 2016 à 16:24:39

              oui les / c'est juste parce qu'il a précisé qu'il était sur Windows et que je suis fainéant ^^

              Et non, je reprends mon exemple avec Pyzo, ca te mets dans "C:/Users/username/" et non au dossier d'execution. Par ailleurs sys.argv est vide, et __file__ n'est pas défini ^^

              • Partager sur Facebook
              • Partager sur Twitter
              Si je suis tête en l'air, c'est par habitude de viser le sommet
                27 octobre 2016 à 16:48:06

                Même en lançant Pyzo depuis le répertoire courant ? :p Et il n'y a aucune option pour changer cela ? (je ne sais pas, je connais pas Pyzo ^^)
                • Partager sur Facebook
                • Partager sur Twitter
                Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
                  27 octobre 2016 à 17:18:33

                  bingo je suis sur pyzo

                  j’ai rajouté :

                  import os
                  os.chdir("C:/le/chemin/jusqua/ton/dossier")
                  et tout marche niquel je vous remercie vous m'enlevez une épine du pieds :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 octobre 2016 à 17:55:45

                    Pour être plus propre, fait plutôt ceci :

                    import os
                    os.chdir(os.path.join("chemin","jusqua","ton","dossier"))

                    Je n'ai pas mis le C: dans mon exemple, pour que ce soit le plus général possible. Mais s'il est nécessaire, met le ! ;)

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
                      27 octobre 2016 à 18:29:29

                      oowaka a écrit:

                      Même en lançant Pyzo depuis le répertoire courant ? :p Et il n'y a aucune option pour changer cela ? (je ne sais pas, je connais pas Pyzo ^^)


                      Dis-toi que si je suis aller jusqu'à sys.argv, c'est que j'y ai passé du temps :p

                      Je trouverai peux-être un jour ^^

                      En tout cas si quelqu'un à une solution, je la veux bien ! ^^

                      estebanjean36 a écrit:

                      bingo je suis sur pyzo

                      Sans mentir, j'ai hésité à mettre des le début "Je parie que t'es sur Pyzo" mais j'ai pas osé x)

                      Pour ca que j'ai fais comme si ;)

                      Bon, oublies pas de mettre le sujet en résolu si ca fonctionne :)

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Si je suis tête en l'air, c'est par habitude de viser le sommet

                      probleme de module

                      × 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