0

Can anyone explain to me why I get the following error when running my programme please?

ImportError: cannot import name 'Adviser' from 'src.models.adviser'

My folder is structured like so...

root
-- src
   models
   -- __init__.py
   -- adviser.py
   -- episode.py
-- set_up.py

I have a setup script...

from src.models.adviser import Adviser


if __name__ == "__main__":
    for adv in Adviser.all():
        print(adv)
# src.models.adviser.py

from .base_model import BaseModel
from orator.orm import has_many
from .episode import Episode


class Adviser(BaseModel):
    @has_many
    def learners(self):
        return Episode

and finally...

# src.models.episode.py

from .base_model import BaseModel
from orator.orm import belongs_to

from .adviser import Adviser


class Episode(BaseModel):
    @belongs_to
    def adviser(self):
        return Adviser

If I remove the import statement from src.models.episode.py then the script runs.

What am I not understanding and doing wrong?

bencarter78
  • 3,555
  • 9
  • 35
  • 53

1 Answers1

1

You have created circular imports: adviser imports Episode from episode, which in turn imports Adviser from adviser.

See more here:

Circular (or cyclic) imports in Python

Inon Peled
  • 691
  • 4
  • 11