Confused with Python's import intrapackage references -
i run python 2.7.6. having problem creating package. following mwe:
i have following files:
run.py mypackage/ __init__.py father_class.py son_class.py class1.py with following content:
init.py
__all__ = ['father_class', 'son_class', 'class1'] run.py
from mypackage import father_class, son_class father_class.py:
class daddy(object): def __init__(self): self.hello=1 son_class.py:
from mypackage import * # alternatively tried: mypackage import class1, father_class class sonny(daddy): def __init__(self): super(daddy, self).__init__() self.bye=class1.myclass1() #alternatively tried self.bye=myclass1() class1.py:
class myclass1(object): def __init__(self): self.life=1 when running run.py get:
self.bye=class1.myclass1() nameerror: global name 'class1' not defined any ideas of i'm doing wrong?
you can import modules relatively import unless import available in site-packages globally or in virtualenv. therefore module a in package/a cannot import module b in package/b importing package , navigating there, can import b directly (being on same level):
for son_class.py use:
from class1 import myclass1 father_class import daddy class sonny(daddy): def __init__(self): super(daddy, self).__init__() self.bye=myclass1() otherwise, advisable specific in imports , import definitions need: of enormous anythings needs refactored. if explicitly write down import path receive more sensible error message.
Comments
Post a Comment