导入错误,没有名为xxxx的模块

Hel*_*lad 46 python python-3.x

我有一个具有该结构的项目

/example
../prediction
....__init__.py
....a.py
Run Code Online (Sandbox Code Playgroud)

PYTHONPATH指向/示例

现在我打开终端中的python并输入

import prediction
Run Code Online (Sandbox Code Playgroud)

它成功了,但如果我输入

import prediction.a
Run Code Online (Sandbox Code Playgroud)

它返回错误

ImportError: No module named 'prediction.a'; 'prediction' is not a package
Run Code Online (Sandbox Code Playgroud)

这是为什么?不是已经作为包导入

lar*_*sks 77

如果当前目录中的module(foo.py)或package(foo/__init__.py)具有冲突的名称,则可能会导致您看到的行为.

在你的情况下,我怀疑有一个名为的文件prediction.py,你得到的不是predictionexamples目录中的包.

  • 由于您的答案仅解释了原因,但没有提供明确导入包的解决方案,这是否意味着Python无法这样做? (3认同)
  • 我一直在摸索着解决类似的问题...这解决了我的问题.谢谢. (2认同)
  • 我想这取决于你的意思。Python *不*通过绝对路径名导入文件,但您可以自行修改模块搜索路径以更改搜索内容的顺序(或位置)。如果您想更详细地探讨该问题,最好在 stackoverflow 上提出一个新问题。 (2认同)