解决ModuleNotFoundError: No module named 'game'及同目录Python模块导入问题
解决ModuleNotFoundError: No module named 'game'报错
项目背景
你的文本类小游戏项目文件都放在game文件夹中,目录结构如下:
C:. boucle_de_jeu.py clss.py documentation.md fonctions_boucle_jeu.py idees.txt map_developpement.py meta_data.json
各核心文件作用:
boucle_de_jeu.py:游戏循环主脚本clss.py:存储游戏物品类fonctions_boucle_jeu.py:主脚本依赖的工具函数map_developpement.py:导入类并创建游戏实例
运行boucle_de_jeu.py时出现如下报错:
PS C:\Users\...\python\game> py boucle_de_jeu.py Traceback (most recent call last): File "C:\Users\...\python\game\boucle_de_jeu.py", line 6, in <module> import game.map_developpement as map_items ModuleNotFoundError: No module named 'game'
当前使用的导入语句:
# ... import sys from os import system # ... import game.map_developpement as map_items import game.fonctions_boucle_jeu as fct_boucle
解决方法
方法一:修改导入语句(无需调整目录结构)
所有文件处于同一层级目录,直接导入模块名即可,不需要添加game.前缀:
# 替换原导入语句 import map_developpement as map_items import fonctions_boucle_jeu as fct_boucle
Python会默认在当前脚本所在目录搜索模块,修改后即可正常运行。
方法二:将game转为Python包(规范的长期方案)
如果希望保留game.xxx的导入风格,可将game文件夹转为合法的Python包:
- 在
game文件夹内创建空的__init__.py文件(无需写入内容,仅用于标记该文件夹为Python包) - 从
game的上级目录运行脚本:比如当前你在game目录下,先切换到上级目录(如C:\Users\...\python),执行命令:
py -m game.boucle_de_jeu
这种方式更符合Python项目的规范,便于后续扩展模块。
方法三:动态添加路径(临时 workaround)
如果暂时不想修改导入语句或目录结构,可在boucle_de_jeu.py开头添加代码,将当前目录加入Python模块搜索路径:
import sys import os # 添加当前脚本所在目录到搜索路径 sys.path.append(os.path.dirname(os.path.abspath(__file__))) # 保留原导入语句 import game.map_developpement as map_items import game.fonctions_boucle_jeu as fct_boucle
此方法仅适合临时测试,长期维护推荐使用前两种方案。
内容的提问来源于stack exchange,提问作者Jean G.
相关产品推荐
相关产品推荐

