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

Python无法执行绝对导入 特定目录结构下跨包导入失败问题

Python跨包导入失败的原因和解决方案

导入不生效的核心原因

你写的绝对导入语法本身没有问题,失败的核心原因是Python的模块搜索路径中没有包含你的项目根目录:
当你直接运行python package1/file1.py时,Python会自动把file1.py所在的package1文件夹加入搜索路径sys.path,此时Python只能看到package1目录下的文件,自然找不到根目录下的root_file.py和同级的package2包。

关于__init__.py的疑问

Python 3.3版本引入了命名空间包机制,之后不需要在文件夹下添加__init__.py也能被识别为可导入的包。但如果你需要兼容Python 3.3以下版本,或者需要在包加载时执行初始化逻辑、配置__all__导出列表,还是建议在package1、package2、package2/subfolder三个目录下各添加一个空的__init__.py文件,兼容性更强。这并不是你本次导入失败的主要诱因。

可行的解决方案

方案1:调整运行命令(推荐)

不要直接运行file1.py脚本,切换到项目根目录后,用模块运行的方式启动脚本:

python -m package1.file1

这种方式会自动把当前的根目录加入sys.path,你原本写的导入语句不需要任何修改就能正常生效。

方案2:手动添加根目录到搜索路径

如果你需要直接运行file1.py,可以在file1.py的最开头(所有导入语句之前)添加以下代码,手动把根目录加入搜索路径:

import sys
from pathlib import Path
# 获取当前文件的上两级目录,也就是项目根目录,加入搜索路径
sys.path.append(str(Path(__file__).parent.parent.resolve()))

添加完成后再执行你原本的导入语句即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:27:05