Python导入模块报ModuleNotFoundError 跨目录访问模块找不到问题
Python模块导入错误解决方案
该错误的核心原因是Python运行时的模块搜索路径中未包含你的project项目根目录,无法定位到modules包。
解决方案
- 方案1:test.py中临时添加搜索路径
在test.py文件的最开头加入以下代码,手动把项目根目录加入Python搜索路径:
import sys import os # 计算项目根目录(test目录的上层目录)的绝对路径 project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(project_root)
添加后即可正常导入所需模块:
# 导入config/cache.py from modules.config import cache
- 方案2:调整运行命令的执行位置
不需要修改代码,运行时不要进入test目录执行脚本,而是在project根目录下以模块模式运行test.py:
python -m test.test
- 方案3:IDE适配(可选)
如果使用PyCharm、VS Code等IDE开发,可直接将project目录标记为「源代码根目录(Sources Root)」,IDE运行脚本时会自动将该目录加入模块搜索路径,无需额外修改代码。
模块内部跨文件访问写法
模块内部的跨文件导入直接使用基于modules包的绝对导入即可,稳定性最高:
比如从config/env.py访问database/models/game.py,直接在env.py中写:
from modules.database.models import game
无需使用复杂的相对导入,只要保证运行时搜索路径包含项目根目录即可正常生效。你当前modules目录下的__init__.py配置无需修改,可正常使用。
内容的提问来源于stack exchange,提问作者Zebco
相关产品推荐
相关产品推荐

