ModuleNotFoundError: What does it mean main is not a package?

I am trying to run a module from the console. The structure of my directory is this:

enter image description here

I am trying to run the module p_03_using_bisection_search.py, from the problem_set_02 directory using:

    $ python3 p_03_using_bisection_search.py

The code inside p_03_using_bisection_search.pyis:

    __author__ = 'm'

    """
    Docstring
    """

    from .p_02_paying_debt_off_in_a_year import compute_balance_after


    def compute_bounds(balance: float,
                       annual_interest_rate: float) -> (float, float):
        """"
        Docstring
        """
        # there is code here, but I have omitted it to save space
        pass


    def compute_lowest_payment(balance: float,
                               annual_interest_rate: float) -> float:
        """
        Docstring
        """
        # there is code here, but I have omitted it to save space
        pass    

    def main():
        balance = eval(input('Enter the initial balance: '))
        annual_interest_rate = eval(input('Enter the annual interest rate: '))

        lowest_payment = compute_lowest_payment(balance, annual_interest_rate)
        print('Lowest Payment: ' + str(lowest_payment))


    if __name__ == '__main__':
        main()

I am importing a function that is in p_02_paying_debt_off_in_a_year.py which code is:

    __author__ = 'm'

    """
    Docstring
    """


    def compute_balance(balance: float,
                        fixed_payment: float,
                        annual_interest_rate: float) -> float:
        """
        Docstring
        """
        # this is code that has been omitted
        pass


    def compute_balance_after(balance: float,
                              fixed_payment: float,
                              annual_interest_rate: float,
                              months: int=12) -> float:
        """
        Docstring
        """
        # Omitted code
        pass


    def compute_fixed_monthly_payment(balance: float,
                                      annual_interest_rate: float) -> float:
        """
        Docstring
        """
        # omitted code
        pass


    def main():
        balance = eval(input('Enter the initial balance: '))
        annual_interest_rate = eval(
            input('Enter the annual interest rate as a decimal: '))
        lowest_payment = compute_fixed_monthly_payment(balance,
                                                       annual_interest_rate)
        print('Lowest Payment: ' + str(lowest_payment))


    if __name__ == '__main__':
        main()

I am getting the following error:

    ModuleNotFoundError: No module named '__main__.p_02_paying_debt_off_in_a_year'; '__main__' is not a package

I have no idea how to solve this issue. I have tried adding a __init__.py file, but it is still not working.

Simply remove the dot for the relative import and do:

    from p_02_paying_debt_off_in_a_year import compute_balance_after

From: stackoverflow.com/q/41816973

Back to homepage or read more recommendations: