我有像this这样的包结构:

sound/
├── effects
│   ├── echo.py
│   ├── __init__.py
│   └── reverse.py
├── formats
│   ├── __init__.py
│   ├── waveread.py
│   └── wavewrite.py
└── __init__.py


然后,为了自动加载子模块echoreverse,我将以下导入语句添加到我的effects/__init__.py文件中

from . import echo
from . import reverse


但是,在导入sound.effects之后,尝试访问echoreverse时仍然出现NameError:

>>> import sound.effects
>>> echo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'echo' is not defined
>>> reverse
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'reverse' is not defined


我想念什么吗?

最佳答案

是。您导入了sound.effects,但不会将effects的内容带入当前的名称空间。您仍然需要在以下位置引用它们:sound.effects.echosound.effects.reverse

如果只想按名称引用它们,则需要导入这些名称:

from sound.effects import echo, reverse

08-20 04:47