Importer des fonction d'un module qui import d'un module

Résolu
hpfort Messages postés 18 Statut Membre -  
hpfort Messages postés 18 Statut Membre -
Bonjour,
j'ai mon fichier principal et je veux importer des fonctions d'un module qui (la fonction) importe, elle aussi, des fonctions d'un autre module.

comment puis-je faire ?

main.py :
#coding:utf-8
from module1 import *
print("text")
print("text")
fonction1()


module1.py :
#coding:utf-8
def fonction1():
 from module2 import *
 print("text")
    fonction2()


module2.py :
#coding:utf-8
def fonction2():
 print("text")


erreur du cmd :
Traceback (most recent call last):
File "c:\aaaaa\aaaaa\aaaaaa\main.py", line 2, in <module>
from hutte import *
File "c:\aaaaa\aaaaa\aaaaaa\module1.py", line 3
def a():
^
SyntaxError: import * only allowed at module level


(le chemin d'accès est bon)

pierre
Configuration: Windows / Edge 92.0.902.78

6 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    il semble que le message d'erreur ne corresponde pas au code que tu présentes. merci de nous embrouiller.
    comprends-tu le message "import * only allowed at module level"?
    ne vois-tu pas le lien avec module1.py?
    0
  2. hpfort Messages postés 18 Statut Membre
     
    bonjour
    juste avant, j’ai testé sans mettre le
    from module2 import *
    et le code fonctionnais. Ensuite je l'ai rajouté et c'est là que ça a fait une erreur, donc je suppose que l'erreur vient de là.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      comprends-tu le message "import * only allowed at module level"?
      0
  3. hpfort Messages postés 18 Statut Membre
     
    bonjour, je ne le comprenais pas, mais maintenant, c’est bon. Comment puis-je faire du coup pour que je puisse importer le module2 depuis le module1 qui est importé depuis le main
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      tu écris "c'est bon", sans nous montrer ce que tu as essayé.
      je suggère de faire
      import bidule
      au lieu de
      from bidule import *
      .
      exemple:
      def fonction1():
       import module2 
       print("text f1")
       module2.fonction2()
      0
  4. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour,

    un import à l'intérieur d'une fonction, c'est glauque ...
    0
    1. vortex
       
      Bonjour,

      Non, ce n'est pas "glauque", l'intérêt principal est de ne pas polluer l'espace global avec un module dont on ne se servira que dans une fonction précise.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Alors, non seulement je trouve ça glauque, mais l'interpréteur Python aussi :

    SyntaxError: import * only allowed at module level
    0
    1. vortex
       
      Evidemment, c'est pour ça que l'on doit garder le module importé dans son namespace.
      0
      1. vortex > vortex
         
        On est d'accord =)

        Mais dans malheureusement beaucoup de tuto, cet affreux import * est utilisé à foison.
        0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      moi, c'est le
      import *
      que je trouve glauque.
      je préfère de loin faire un simple "import".
      0
  7. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    hé oui

    et donc en mettant import module2 au lieu de from module2 import * c'est ok ...
    0
    1. hpfort Messages postés 18 Statut Membre
       
      merci je vais le faire
      0