from ... improt ...报错问题

1. 确认项目目录结构

假设你的项目结构如下(重点检查目录层级和命名):

(这里我的项目必须使用兄弟目录结构,根据自己项目需求来)

project_root/                # 项目根目录
├── app/                     # 主应用目录(兄弟目录)
│   ├── __init__.py
│   └── models.py           # 需要导入 BaseModel
└── utils/                   # 工具目录(兄弟目录)
    ├── __init__.py
    └── base_models.py      # 包含 BaseModel 类

2. 错误原因分析

  • Python 路径未包含项目根目录:默认情况下,Python 只会在当前脚本所在目录和已安装的包路径中搜索模块。

  • 缺少 __init__.py:若 utils 或 app 目录下没有 __init__.py,Python 不会将其视为包。

  • IDE 配置问题:某些 IDE 未将项目根目录标记为源代码根目录。

3. 解决方案

使用相对导入

如果 app 和 utils 是同一父包下的子包,可以用相对导入(需确保目录是包):

python

# app/models.py
from ..utils.base_models import BaseModel  # 注意:两个点表示父目录

注意:我使用

from utils.base_models import BaseModel

则会报错,需要加上"..",使用相对导入则成功

——————————更新——————————

使用Django项目的时候, Django 运行时,会将项目主目录(bysms)视为顶级包,而 users 和 utils 可能未被正确识别为子包。

这里可以先验证(我验证之后确实生效了,但是代码上仍然报错)

4.验证导入是否实际生效

在 Django Shell 中手动测试:

bash

python manage.py shell

python

>>> from utils.base_models import BaseModel
>>> print(BaseModel)  # 应输出 <class 'utils.base_models.BaseModel'>

5. IDE 配置问题

PyCharm/VSCode 无法识别引用
  • 步骤 1:标记项目根目录为源码根目录。

    • PyCharm:右键项目根目录 → Mark Directory as → Sources Root

    • VSCode:在项目根目录创建 .vscode/settings.json

      json

      {
        "python.analysis.extraPaths": ["./"]
      }
  • 步骤 2:重建 IDE 索引。

    • PyCharmFile → Invalidate Caches → Invalidate and Restart

    • VSCode:重启编辑器或执行命令 Developer: Reload Window

这里我设置了一下根路径就不报错了! !!感谢

后来我发现可以启用 Django 支持,会自动配置,但是需要更高级pycharm的且需要付费,如果有需要的伙伴可以试试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值