In Python, when I use this import statement breze.learn.mlp import iter_minibatches, am getting the following errors.
Here iter_minibatches is a function defined in mlp.py.
Traceback (most recent call last):
File "/home/vinod/PycharmProjects/MLPonTheano/MLPbreze.py", line 15, in <module>
from breze.learn.mlp import Mlp, FastDropoutNetwork
File "/home/vinod/breze/breze/learn/mlp.py", line 22, in <module>
from breze.learn.base import SupervisedModel
File "/home/vinod/breze/breze/learn/base.py", line 21, in <module>
from breze.learn.mlp import iter_minibatches
ImportError: cannot import name iter_minibatches
vaultah
46.9k13 gold badges120 silver badges145 bronze badges
1 Answer 1
You have a circular import; mlp imports base imports mlp:
# executing mlp.py
File "/home/vinod/breze/breze/learn/mlp.py", line 22, in <module>
from breze.learn.base import SupervisedModel
# executing base.py
File "/home/vinod/breze/breze/learn/base.py", line 21, in <module>
# this tries to import from mlp again, but mlp isn't done yet
from breze.learn.mlp import iter_minibatches
Any line after the from breze.learn.base import SupervisedModel will not yet have been executed so importing any object defined by those lines will fail.
Avoid circular imports, or if you must have them, delay importing in one of the modules to make sure the objects you need in the other are defined.
answered Sep 4, 2015 at 14:40
Martijn Pieters
1.1m326 gold badges4.2k silver badges3.4k bronze badges
Sign up to request clarification or add additional context in comments.
7 Comments
Sam
Good catch @MartijnPieters!
Vinod prime
I am using from breze.learn.mlp import iter_minibatches in base.py and this import from breze.learn.base import SupervisedModel is used in mlp.py... Can you suggest me how to solve it.... I am newbie to python
Vinod prime
@MartijnPieters I am facing this problem only after adding from breze.learn.mlp import iter_minibatches in base.py
Martijn Pieters
@Vinodprime: yes, and that caused the circular import. Do you have to have that import there? Can you reorganise your objects to not have
mlp import something from base again?Vinod prime
@MartijnPieters I have to use iter_minibatches in base.py, so I don't know wat to do
|
lang-py
iter_minibatchesis a function defined in mlp.py" -- can you prove it?dir(breze.learn.mlp)output?