我有这样的包
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 并找到相关的问题和答案,但我无法理解它们。
请帮我解决这个问题。
谢谢,
Prawyn。
答案 0 :(得分:2)
如果文件夹名称为effects
,您为什么要尝试从effect
导入?请改为from sound.effects import echo
。
另外,为什么要尝试从内部导入echo
?
答案 1 :(得分:2)
如果您从avi.py
文件夹中运行formats
,并且未调整PYTHONPATH
,则Python将无法找到effects
包。尝试从声音目录外部运行代码,修改PYTHONPATH
环境变量,使其包含sound
生存的目录,或者在运行时更改PYTHONPATH
(请参阅例如this link)。
答案 2 :(得分:1)
我将假设sound.effect
是一个拼写错误,而且是sound.effects
。如果是这种情况,那么问题可能是由于您的项目结构。
如果您的项目的根级别是sound
,如图中所示,并且已将其添加到PYTHONPATH
(或任意数量的其他安装方法),那么Python将无法知道查找sound
(因为没有相对于名为sound
的根目录的目录。)
因此,通常您会看到包结构,例如:
sound/
README
LICENSE
setup.py
sound/
__init__.py
......等等。
使用您当前的目录结构(如果我的假设是正确的),那么实际工作的导入是from effects import echo
。