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

Python3.10特殊文件结构下无法导入函数 相对导入报错如何修复

Python相对导入错误修复方案

这个错误出现的核心原因是:当你直接运行part1.py脚本时,Python会将该脚本所在的part1目录作为顶层执行目录,不会自动把项目根目录(part1目录的上级目录)加入Python的模块搜索路径;同时相对导入的语法依赖完整的包结构上下文,只有将整个项目作为包运行时相对导入才会生效,单独执行单个脚本无法识别相对路径的父包。

你可以根据自己的使用场景选择以下任意一种方案修复:

  • 方案1:修改为绝对导入,手动将项目根目录加入搜索路径
    在part1.py的最开头添加以下代码即可,不需要修改业务逻辑:
import sys
from pathlib import Path
# 将part1目录的上级目录(也就是项目根目录)加入Python模块搜索路径
sys.path.append(str(Path(__file__).parent.parent.resolve()))

# 改为绝对导入即可
from utils.utils import getFreq

print(getFreq(["R8","U5","L5","D3"]))
  • 方案2:使用-m参数以包模块的形式运行脚本
    不需要修改任何代码,在项目根目录(即同时包含part1文件夹、utils文件夹的目录)下打开终端,执行以下命令即可:
python -m part1.part1

这种运行方式会将当前终端所在的项目根目录识别为顶层包目录,你原本写的相对导入语法可以直接生效。

  • 方案3:IDE专属配置
    如果你使用PyCharm等IDE开发,可以右键点击项目根目录,选择「将目录标记为→Sources Root」,IDE会自动将该目录加入模块搜索路径,直接使用from utils.utils import getFreq的绝对导入写法即可正常运行脚本。

补充说明:你已经在utils目录下添加__init__.py的操作是正确的,无需额外修改该文件;如果需要兼容旧版本Python,也可以在项目根目录下额外添加一个空的__init__.py文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:21:00