Python如何从resources/user导入models/user的UserModel并解决导入报错
Python跨模块导入报错解决方案
错误原因
Cannot find reference 'models' in 'code.py'错误:你的项目根目录下不存在code层级目录,导入路径多写了不存在的code前缀,IDE/编译器无法匹配到对应路径ImportError: attempted relative import beyond top-level package错误:你直接将resources/user.py作为入口脚本运行,此时Python会自动把脚本所在的resources目录标记为顶级包,无法识别到上层目录的models文件夹
可用解决方案
方案1:调整运行方式(最推荐,无需修改代码)
不要直接执行python resources/user.py,切换到项目根目录后,用模块方式运行脚本即可适配你写的相对导入逻辑:
python -m resources.user
方案2:手动添加根目录到Python搜索路径
如果需要直接运行resources/user.py脚本,在文件最开头先添加路径配置代码,后续用绝对导入即可:
import sys import os # 自动获取项目根目录路径并加入Python搜索列表 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # 直接写根目录下的路径导入即可 from models.user import UserModel
方案3:标准化项目结构(适合长期维护项目)
在外层新增项目根包目录,调整结构如下:
└── your_project_name # 替换为你的项目名 ├── __init__.py ├── models │ ├── __init__.py │ └── user.py └── resources ├── __init__.py └── user.py
将your_project_name的上层目录加入系统PYTHONPATH环境变量,之后全项目统一用绝对导入即可:
from your_project_name.models.user import UserModel
内容的提问来源于stack exchange,提问作者abbas jafari
相关产品推荐
相关产品推荐

