I am trying to write a library (sort of) for my project. I would like to keep it as modularized as possible. I have a main.py in the root directory and I have two packages required for running the main. I am calling them package1 and package2. The packages in each of them will inherit from their own base packages. The overall tree is as following:
.
├── main.py
├── package1
│   ├── base_package1.py
│   ├── __init__.py
│   └── main_package1.py
└── package2
    ├── base_package2.py
    ├── __init__.py
    └── main_package2.py
In the file for each package, I am also writing the code to test them. But to test package 2, I also need package 1. My question is about how to import package 1 to package 2. main.py is currently empty. I will share the contents of the remaining files here.
# package1/__init__.py
from .main_package1 import *
# package1/base_package1.py
class BasePackage1:
    def __init__(self):
        print("init base package 1")
# package1/main_package1.py
from base_package1 import BasePackage1
class MainPackage1(BasePackage1):
    def __init__(self):
        super().__init__()
        print("init main package 1")
if __name__ == "__main__":
    # Test MainPackage1
    pkg = MainPackage1()
# package2/base_package2.py
class BasePackage2:
    def __init__(self):
        print("init base package 2")
# package2/main_package2.py
from base_package2 import BasePackage2
class MainPackage2(BasePackage2):
    def __init__(self):
        super().__init__()
        print("init main package 2")
if __name__ == "__main__":
    # Option 1
    import sys
    sys.path.append("../")
    from package1 import MainPackage1
    # Error:
    # ModuleNotFoundError: No module named 'base_package1'
    # Option 2
    from ..package1 import MainPackage1
    # Error:
    # ImportError: attempted relative import with no known parent package
What is the correct way to do this? Is there a standard way to do this?
Update: I have found a solution that works for now and posted it as an answer below. If you have a better solution, please post it.
 
    