0

I have these modules and packages:

main.py/                          
        pkg1/                  
            __init__.py
            maclasse1.py

        pkg2/                  
           __init__.py
           maclasse2.py

main.py:

from pkg1 import maclasse1
from pkg2 import maclasse2
if __name__=="__main__":
   MC1=maclasse1.MaClasse1()
   MC1.ma_classe1()
   MC2=maclasse2.MaClasse2()
   MC2.ma_classe2()

maclasse1.py

from pkg2 import maclasse2
class MaClasse1:
   def ma_classe1(self):
       print "Ma Classe 1"
       c2=maclasse2.MaClasse2()
       c2.ma_classe2()

maclasse2.py

from pkg1 import maclasse1
class MaClasse2:
   def ma_classe2(self):
       print"Ma Classe 2"
       mc1=maclasse1.MaClasse1()
       mc1.ma_classe1()

When I run the main.py file, I get this error:

Traceback (most recent call last):
  File "main.py", line 1, in <module>
    from pkg1 import maclasse1
  File "/home/nakkini/Desktop/tester/pkg1/maclasse1.py", line 1, in <module>
    from pkg2 import maclasse2
  File "/home/nakkini/Desktop/tester/pkg2/maclasse2.py", line 1, in <module>
    from pkg1 import maclasse1
ImportError: cannot import name maclasse1

How to resolve this problem ?

EDIT:

Following Tim's comment, I creat a tohelp.py in pkg3 that imports maclasse1.py whereas maclass2.py imports tohelp.py but I still have the same problem.

1 Answers1

0

If you don't intend to change architecture, try this:

maclasse1.py

class MaClasse1:
    def ma_classe1(self):
        from pkg2 import maclasse2
        print "Ma Classe 1"
        c2=maclasse2.MaClasse2()
        c2.ma_classe2()

maclasse2.py

class MaClasse2:
    def ma_classe2(self):
        from pkg1 import maclasse1
        print"Ma Classe 2"
        mc1=maclasse1.MaClasse1()
        mc1.ma_classe1()
pavel_form
  • 1,680
  • 10
  • 13