找不到Python自定义模块

Ste*_*ang 4 python python-3.x

我有一个目录结构如下:

evaluate.py
tools (folder)
   -- ngram.py
   -- bleu.py
Run Code Online (Sandbox Code Playgroud)

在 中bleu.py,我导入ngram. 并且,在 中evaluate.py,我导入tools.bleu. 但是,发生错误,ModuleNotFoundError: No module named 'ngram'. 我哪里做错了?谢谢~

Blc*_*ght 5

如果您打算tools成为一个包,则需要将其中的模块更改为在相互导入时使用绝对导入或显式相对导入。

也就是说,您需要更改tools/bleu.py以执行以下任一操作:

import tools.ngram     # or: from tools import ngram
Run Code Online (Sandbox Code Playgroud)

或者:

from . import ngram
Run Code Online (Sandbox Code Playgroud)

您可能也应该__init__.pytools文件夹中放置一个文件(尽管它不再是绝对必要的)。

  • 我认为你可以使用`from .ngram import get_ngram`。注意模块名称前面的点,它告诉 Python 这是一个相对导入。 (2认同)