You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目中如何导入am_model.py至views.py?解决相对导入报错

解决Python相对导入超出顶层包的问题

首先看你的项目结构:
Project structure

你在backend/api/views.py中导入am_model.py时遇到ImportError: attempted relative import beyond top-level package,下面是几种可行的解决方法:

方法1:将项目根目录加入Python路径

直接在views.py开头添加代码,把包含backend和easy_ViTPose的项目根目录添加到Python的搜索路径里,这样就能直接导入目标模块:

import sys
import os
# 从views.py的路径往上回溯两级,找到项目根目录
project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
sys.path.append(project_root)

# 现在可以直接导入am_model
import am_model

方法2:以模块方式运行脚本

不要直接执行python backend/api/views.py(这种方式会把api当成顶层包),而是从项目根目录以模块形式运行:

python -m backend.api.views

此时backend会被识别为顶层包,你就可以在views.py中使用相对导入:

from .. import am_model

方法3:把easy_ViTPose安装为本地包

因为am_model.py依赖easy_ViTPose里的文件,你可以把easy_ViTPose变成可安装的本地包,这样所有模块都能直接导入:

  1. 在easy_ViTPose目录下创建setup.py文件,内容如下:
from setuptools import setup, find_packages

setup(
    name="easy_ViTPose",
    version="0.1",
    packages=find_packages(),
)
  1. 从项目根目录执行安装命令:
pip install -e ./easy_ViTPose

之后不管是am_model.py还是views.py,都能直接用绝对导入引用easy_ViTPose里的模块,不会出现路径问题。

方法4:修改am_model的导入方式

如果am_model.py里用了相对导入引用easy_ViTPose的文件,把它改成绝对导入。比如把:

from .utils import xxx

改成:

from easy_ViTPose.utils import xxx

确保项目根目录在Python路径中,之后views.py就能正常导入am_model了。

内容的提问来源于stack exchange,提问作者Hold_Ma_Beer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:06:11