导入时出现的模块未找到错误

4
我正在尝试从文件classes.py中导入*。我的目录如下:
mypkg
├── main.py
├── classes.py

当我尝试

from classes import *

它不识别类。查找后,我发现应该使用显式导入。

from .classes import *

它确实识别类,但当我尝试运行它时会出现下面的错误。

ModuleNotFoundError: No module named '__main__.classes'; '__main__' is not a package

任何关于如何处理以及为什么会发生这种情况的建议都将不胜感激。

你是如何运行代码的?从哪个目录下运行代码? - Klaus D.
1个回答

4

为了让python将一个文件夹识别为包,你需要在其中添加一个__init__.py文件:

mypkg
├── __init__.py
├── main.py
├── classes.py

在IT技术中,python调用的目录也很重要(从包文件夹内部运行与从外部运行不同),还有PYTHONPATH环境变量。

Python文档中有关于import和包系统的章节,解释得非常好。


1
对于Python 3.3+,如果__init__方法是空的,你不再需要它了。 - eric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接