Search code examples
pythonpython-module

Python: Unexpected ImportError


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.


Solution

  • 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()