模块没有该属性
我有一个文件夹,里面有很多个.py
文件,每个文件里定义了一些类。我还在这个文件夹里放了一个空的__init__.py
文件。
比如说:
myproject
__init__.py
mymodule
__init__.py
api.py
models.py
views.py
我想导入mymodule
,并访问这些文件里定义的类:
from myproject import mymodule
print mymodule.api.MyClass
但是它给我报错,说mymodule
没有api
这个属性。为什么会这样呢?还有,为什么我只能访问其中一个文件(models.py
),而不能访问其他文件呢?
In [2]: dir(banners)
Out[2]:
['__builtins__',
'__doc__',
'__file__',
'__name__',
'__package__',
'__path__',
'models']
4 个回答
2
模块不是那样工作的。
from myproject.mymodule import api
print api.MyClass
43
还要检查一下,你的Python文件名是不是和你想要导入的模块名字一样。
117
问题是子模块不会自动导入。你需要明确地导入 api
模块:
import myproject.mymodule.api
print myproject.mymodule.api.MyClass
如果你真的希望在导入 myproject.mymodule
时 api
模块就能使用,可以在 myproject/mymodule/__init__.py
文件中加入以下内容:
import myproject.mymodule.api
这样做之后,事情就会按预期那样工作:
from myproject import mymodule
print mymodule.api.MyClass