Python导入同目录文件遇ModuleNotFoundError的解决方法
解决ModuleNotFoundError: No module named 'Chessbot'问题
你的文件结构如下:
桌面 └── programming └── Chessbot ├── ChessEngine.py └── ChessMain.py
报错核心原因:直接运行ChessMain.py时,Python的当前工作目录是Chessbot文件夹,它会在自身的模块搜索路径(sys.path)里查找名为Chessbot的模块,但该模块就是当前所在文件夹,自然无法匹配。以下是几种可行的解决办法:
方法1:同目录直接导入(最简单)
两个文件处于同一文件夹下,直接用同目录导入逻辑:
# ChessMain.py 第一行修改为 import ChessEngine
如果是作为包的一部分被导入(而非直接运行脚本),也可以用相对导入:
from . import ChessEngine
方法2:将父目录加入Python搜索路径
若你坚持要用from Chessbot import ChessEngine的写法,可在ChessMain.py开头添加代码,把programming目录加入Python的模块搜索路径:
import sys import os # 追溯当前文件的父级目录(即programming) parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(parent_dir) # 此时即可正常导入 from Chessbot import ChessEngine
方法3:将Chessbot转为Python包并从正确路径运行
- 在
Chessbot文件夹中创建一个空的__init__.py文件,让Python将其识别为合法包:
Chessbot/ ├── __init__.py ├── ChessEngine.py └── ChessMain.py
- 打开终端切换到
programming目录(而非Chessbot目录),再运行脚本:
python Chessbot/ChessMain.py
此时from Chessbot import ChessEngine可正常工作,因为programming是当前工作目录,Python会在此路径下找到Chessbot包。
内容的提问来源于stack exchange,提问作者EmperorLarry
相关产品推荐
相关产品推荐

