ModuleNotFoundError报错求助:Python游戏开发中states模块导入失败
解决Python多状态游戏开发中的模块导入错误
问题场景
你的项目目录结构如下:
. └── Test_game ├── game_play.py ├── game.py ├── map │ └── map.png └── states ├── state.py └── title.py
出现的报错情况:
- 在
title.py中执行from states.state import State,触发ModuleNotFoundError: No module named 'states' - 在
game.py中执行from states.title import Title,同样触发上述错误 - 尝试过
pip3 install states,问题未解决
原因解析
- Python默认只会搜索当前运行脚本所在目录以及系统库路径,你的脚本运行时没把
Test_game根目录纳入搜索范围,所以找不到states模块 - 用pip安装
states完全没用,因为这是你自己写的本地模块,不是公开的第三方库
可行解决方法
方法1:改用相对导入
- 在
title.py里,把导入语句改成相对路径形式:from .state import State game.py和states目录同级,原导入语句from states.title import Title本身没问题,但要确保运行脚本时的工作目录是Test_game根目录
方法2:手动添加项目路径到Python搜索列表
在game.py的最开头加上这段代码,强制把项目根目录加入Python的搜索路径:
import sys import os # 将当前脚本所在目录(也就是Test_game根目录)添加到Python路径 sys.path.append(os.path.dirname(os.path.abspath(__file__)))
方法3:切换正确的工作目录再运行脚本
打开终端,先切换到Test_game目录,再执行脚本:
# 替换成你实际的Test_game路径 cd /Users/xxx/Projects/Test_game python game.py
别在Test_game的父目录直接跑python Test_game/game.py,这会让Python识别错模块路径。
内容的提问来源于stack exchange,提问作者Tiya Allen
相关产品推荐
相关产品推荐

