Python导入constants模块报ModuleNotFoundError错误求助
问题产生原因
报错的核心原因是board.py内的导入路径写法不符合Python的包检索规则:
你的项目中constants.py和board.py同属于checkers子包,但board.py里写的from constants import BLACK, ROWS, RED, SQUARE_SIZE属于顶级绝对导入,Python执行这行代码时,会直接从项目根目录(存放main.py的checkers with AI文件夹)下查找名为constants的模块,而根目录下不存在这个文件,自然抛出模块找不到的错误。
你在main.py中写的从checkers.xxx导入的逻辑本身是对的,问题只出在子包内部文件的导入写法上。
解决方法
二选一即可,优先选第一种:
- 方案1:使用包内相对导入(最稳妥)
修改checkers/board.py中的导入语句,在模块名前加.代表当前包目录,让Python直接从同文件夹下找对应模块:
同时修正from .constants import BLACK, ROWS, RED, SQUARE_SIZEmain.py里漏了换行的导入语句,正确写法如下:from checkers.constants import WIDTH, HEIGHT from checkers.board import Board - 方案2:统一使用根路径绝对导入
如果不习惯相对导入,也可以把board.py里的导入改成和main.py一致的、从项目根出发的绝对路径:
注意:用这种写法必须保证你是在项目根目录(from checkers.constants import BLACK, ROWS, RED, SQUARE_SIZEcheckers with AI文件夹)下启动运行main.py,否则依然可能出现路径检索错误。
额外注意事项
- 运行脚本时不要进入
checkers子文件夹内启动,要在存放main.py的根目录下执行运行命令 - 你在所有包目录下添加
__init__.py、加if __name__ == '__main__': main()入口判断的操作都是正确的,不需要改动。
内容的提问来源于stack exchange,提问作者DrApple
相关产品推荐
相关产品推荐

