python - serial - module object has no attribute thread
módulo no tiene atributo (3)
Tengo un directorio con un número de archivos .py
en él. Cada archivo define algunas clases. También tengo un __init__.py
vacío en el directorio.
Por ejemplo:
myproject
__init__.py
mymodule
__init__.py
api.py
models.py
views.py
Estoy intentando importar mymodule
y acceder a las clases definidas en todos estos archivos:
from myproject import mymodule
print mymodule.api.MyClass
Me da un error diciendo que mymodule
no tiene atributo api
. ¿Por qué? ¿Y por qué puedo acceder solo a uno de los archivos ( models.py
) y no a los otros?
In [2]: dir(banners)
Out[2]:
[''__builtins__'',
''__doc__'',
''__file__'',
''__name__'',
''__package__'',
''__path__'',
''models'']
El problema es que los submódulos no se importan automáticamente. Tienes que importar explícitamente el módulo api
:
import myproject.mymodule.api
print myproject.mymodule.api.MyClass
Si realmente insiste en que la api
esté disponible al importar myproject.mymodule
, puede poner esto en myproject/mymodule/__init__.py
:
import myproject.mymodule.api
Entonces esto funcionará como se espera:
from myproject import mymodule
print mymodule.api.MyClass
Los módulos no funcionan así.
from myproject.mymodule import api
print api.MyClass
También necesita un __init__.py
en el directorio myproject. Entonces tu estructura de módulo debería ser:
myproject
__init__.py
mymodule
__init__.py
api.py
models.py
views.py