1

我有一个这样的包裹

sound/
    __init__.py
   effects/
       __init__.py
       echo.py
   formats/
      __init__.py
     avi.py

在 avi.py 我有这样的导入语句

from sound.effects import echo

此代码引发No Module Named sound.effect错误

pythondocs我了解到这是可能的。我正在通过stackoverflow搜索并找到相关的问题和答案,但我无法理解它们。

请帮我解决这个问题。

谢谢,

对虾。

4

3 回答 3

2

如果文件夹名称是effects,您为什么要尝试从中导入effect?试试from sound.effects import echo吧。

另外,您为什么要尝试echo从内部导入?

于 2013-02-20T08:20:22.153 回答
2

如果您avi.py从该formats文件夹运行,并且不调整您的PYTHONPATH,Python 将无法找到该effects包。尝试从声音目录之外运行您的代码,修改您的PYTHONPATH环境变量,使其包含其中sound生活是 thtat 的一部分的目录,或者PYTHONPATH在运行时更改您的代码(例如,参见此链接)。

于 2013-02-20T08:24:36.087 回答
1

我将假设这sound.effect是一个错字并且是sound.effects. 如果是这种情况,那么问题很可能是由于您的项目结构造成的。

如果您的项目的根级别与您sound的图表中一样,并且您已将其添加到您的PYTHONPATH(或任何数量的其他安装方法),那么 Python 将不知道在哪里寻找sound(因为没有相对于您的根目录的目录命名sound)。

因此,通常您会看到包结构,例如:

sound/
    README
    LICENSE
    setup.py
    sound/
        __init__.py

...等等。

使用您当前的目录结构(如果我的假设是正确的),那么实际工作的导入是from effects import echo.

于 2013-02-20T08:25:16.787 回答