我有一个目录结构:
network/__init__.py
network/model.py
network/transformer/__init__.py
network/transformer/t_model.py
both __init__.py
文件有适当的
__all__ = [
"model", # or "t_model" in the case of transformer
"view",
]
在 t_model.py 中,我有
from .. import model
但它说:
ImportError: cannot import name model
If I try
from ..model import Node
it says:
ImportError: cannot import name Node
这些都是非常令人困惑的错误。
编辑:即使绝对导入也会失败:
import network as N
print(dir(N), N.__all__)
import network.model as M
['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'transformer'] ['model', 'view']
Traceback (most recent call last):..........
AttributeError: 'module' object has no attribute 'model'
Edit: 这是一个循环导入.
这对我有用。你可以运行/导入 model.py 吗?如果它有语法错误,则无法导入它。 (一般来说我推荐not做相对进口,它们的使用是有限的)。
你的绝对进口非常令人困惑。在此包中进行绝对导入的方法是:
from network model import Node
这很好用。
我在顶层(网络之上)有一个program.py:
从network.transformer导入t_model
t_model.py 看起来像这样:
from .. import model
print "Model", model
from ..model import Node
print "Node", Node
from network.model import Node
print "Absolute", Node
输出是:
Model <module 'network.model' from '/tmp/network/model.pyc'>
Node <class 'network.model.Node'>
Absolute <class 'network.model.Node'>
正如您所看到的,它工作正常,您的错误在其他地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)