【发布时间】:2021-09-21 20:47:06
【问题描述】:
我在导入模块时遇到问题,这里解释了 https://docs.python.org/3/tutorial/modules.html
我创建了像 here 这样的确切文件
sound/ Top-level package __init__.py Initialize the sound package formats/ Subpackage for file format conversions __init__.py wavread.py wavwrite.py aiffread.py aiffwrite.py auread.py auwrite.py ... effects/ Subpackage for sound effects __init__.py echo.py surround.py reverse.py ... filters/ Subpackage for filters __init__.py equalizer.py vocoder.py karaoke.py ...
我在每个文件中定义了一个变量,如下所示:in_<filename> = 'in <filename>'
例如在sound/effects/echo.py 我有in_echo = 'in echo'
现在您可以在第 1 段中看到 here
例如,如果模块 sound.filters.vocoder 需要使用 echo sound.effects 包中的模块,可以使用
from sound.effects import echo。
所以我这样修改sound/filters/vocoder.py:
from sound.effects import echo
print(echo.in_echo)
in_vocoder = 'in vocoder'
但是当我运行vocoder.py 时,我得到了这个错误:
$ python3 -u "/home/something/sound/filters/vocoder.py"
Traceback (most recent call last):
File "/home/something/sound/filters/vocoder.py", line 1, in <module>
from sound.effects import echo
ModuleNotFoundError: No module named 'sound'
并且正如您在同一部分中看到的那样,在第 2 段中
例如,从环绕模块中,您可以使用:
from . import echo from .. import formats from ..filters import equalizer
所以我这样修改sound/effects/surround.py:
from . import echo
print(echo.in_echo)
in_surround = 'in surround'
但是当我运行surround.py 时,我得到了这个错误:
$ python3 -u "/home/something/sound/effects/surround.py"
Traceback (most recent call last):
File "/home/something/sound/effects/surround.py", line 1, in <module>
from . import echo
ImportError: attempted relative import with no known parent package
这些也一样
from .. import formats
from ..filters import equalizer
我很困惑,我希望能解释一下为什么 python 文档中的确切代码不起作用!!!
非常感谢您的宝贵时间
【问题讨论】:
-
你安装了声音库吗?尝试进行 pip 安装。
-
你没有抓住重点。他们正在创建这个包。
-
@HenryCWong 我的朋友是本地文件!!!
-
@TimRoberts 你是什么意思。我应该怎么做才能创建包?据我所知,当我们有一些模块时,我们称它们为包。
-
那是一个包,叫做“声音”。它旨在作为一个单元使用。您正在尝试自己运行该包的元素之一。这不是预期的用例。
标签: python python-3.x import python-import importerror