Python模块导入报错:No module named 'player_class' 求助
模块导入问题解决方案
问题原因
直接运行game_class.py时,Python会将当前文件所在的Class目录加入模块搜索路径,因此能找到player_class.py;但运行main.py时,搜索路径是Code_Sources目录,此时game_class.py里的from player_class import *会在Code_Sources下查找该模块,自然无法找到。
解决方法
方法1:使用相对导入(推荐)
修改game_class.py中的导入语句为相对路径,指向同一目录下的player_class:
from .player_class import *
这种方式符合Python包的导入规范,无论从哪个入口运行都能正确定位模块。
方法2:使用绝对导入
修改game_class.py中的导入语句为完整的包路径:
from Class.player_class import *
若要直接运行game_class.py,需在Code_Sources目录下以模块方式启动:
python -m Class.game_class
这样Python会将Code_Sources作为根路径,正确识别Class包。
方法3:手动添加模块搜索路径(不推荐)
在main.py开头添加代码,将Class目录加入Python的模块搜索路径:
import sys import os # 将Class目录的绝对路径加入sys.path sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), 'Class')))
之后game_class.py里的原有导入语句可保留,但这种方式依赖路径配置,不利于项目移植。
内容的提问来源于stack exchange,提问作者Hikuyo Diesolow
相关产品推荐
相关产品推荐

