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

如何在Python的FastAPI项目中从根目录导入模块?

解决FastAPI跨包导入ModuleNotFoundError问题

Python的模块搜索路径(sys.path)中未包含package_2所在的根目录,导致无法识别该包。以下是几种可行的解决方法:

方法1:在代码中动态添加根目录到sys.path

在foo.py开头添加代码,手动将包含package和package_2的根目录加入Python搜索路径:

import sys
from pathlib import Path

# 获取当前文件路径,向上追溯到根目录(包含package和package_2的目录)
current_file = Path(__file__).resolve()
# 根据你的目录层级,找到package目录的父目录作为根目录
root_dir = current_file.parents[5].parent

# 也可以用更通用的自动查找方式,避免层级变化出错
# for parent in current_file.parents:
#     if parent.name == "package":
#         root_dir = parent.parent
#         break

sys.path.append(str(root_dir))

# 现在可正常导入package_2中的模块
from package_2.bar import 你的函数名

方法2:设置PYTHONPATH环境变量

启动FastAPI应用前,将项目根目录添加到PYTHONPATH环境变量:

Linux/macOS终端

export PYTHONPATH="/绝对路径/到/根目录:$PYTHONPATH"
# 启动FastAPI应用(假设main.py在package/app/app/下)
uvicorn app.app.main:app --reload

Windows命令提示符

set PYTHONPATH=C:\绝对路径\到\根目录;%PYTHONPATH%
uvicorn app.app.main:app --reload

方法3:将项目安装为可编辑包

适合长期维护的项目,通过配置文件让Python自动识别所有子包:

  1. 在包含package和package_2的根目录下创建pyproject.toml:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "your-project"
version = "0.1.0"
packages = ["package.app.app", "package_2"]
  1. 在根目录执行命令安装可编辑包:
pip install -e .
  1. 之后在foo.py中直接导入即可:
from package_2.bar import 你的函数名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:05:47