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

运行mock目录下main.py触发ImportError:尝试相对导入但无已知父包

解决相对导入报错的方法

原因

直接在mock目录下运行main.py时,Python会把这个脚本当作独立的顶层文件,不会将上层的myfolder识别为可导入的包,因此你使用的..common这类相对导入找不到父级包路径,触发ImportError。

方案1:从项目根目录以模块方式运行

回到myfolder所在的上级目录(即.目录),执行以下命令:

python -m myfolder.mock.main

这种方式会让Python将myfolder当作包处理,相对导入就能正常解析。

方案2:修改导入逻辑,支持直接运行脚本

在main.py开头添加代码,把myfolder目录加入Python的模块搜索路径,再改用绝对导入:

import sys
from pathlib import Path

# 将myfolder目录添加到Python的搜索路径
sys.path.append(str(Path(__file__).parent.parent))

from fastapi import FastAPI
from common.db import create_db_and_tables
from common.routers import myroute


app = FastAPI()
app.include_router(myroute.router)

修改后就能直接在mock目录下运行python main.py。

方案3:将项目安装为可编辑包(适合长期开发)

在myfolder目录下创建pyproject.toml文件,内容如下:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "myfolder"
version = "0.1.0"

回到myfolder所在的上级目录,执行:

pip install -e .

项目会被安装为可编辑包,之后无论在哪个目录,都能通过python -m myfolder.mock.main运行,代码里也能自由使用相对或绝对导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:45:40