'import between files (sibilins) of the same module (directory)

This is a tiny example of my question:

$ tree
.
├── mod
│   ├── a.py
│   ├── b.py
│   └── __init__.py
└── test.py

The code of test.py:

from mod import testB

if __name__ == '__main__':
    testA()
    testB()

The code of a.py:

def testA():
    print("TEST A")

The code of b.py:

from a import testA

def testB():
    print("TEST B CALLS TEST A")
    testA()

The code of __init__.py:

from .a import *
from .b import *

And test.py fails when I call as it:

$ python3 test.py 
Traceback (most recent call last):
  File "test.py", line 1, in <module>
    from mod import testB
  File "/tmp/mod/__init__.py", line 2, in <module>
    from .b import *
  File "/tmp/mod/b.py", line 1, in <module>
    from a import testA
ModuleNotFoundError: No module named 'a'

How do I change the __init__.py or b.py?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source