Python中如何从平行文件夹导入模块?
平行文件夹模块导入问题解决方案
核心原因
直接运行my_prog.py时,Python会把它当作顶层脚本,而非包结构的一部分,因此相对导入语法from ..subfolder2 import credentials无法识别父包,导致报错。
可行解决方法
方法1:以包模块形式运行脚本
切换到project_folder目录下,使用Python的-m参数运行脚本:
python -m subfolder1.my_prog
这种方式会让Python将整个project_folder识别为包结构,相对导入可正常生效,无需修改任何代码。
方法2:动态添加项目根路径到搜索列表
若不想依赖特定运行目录,可在my_prog.py开头添加以下代码,手动将项目根目录加入Python的模块搜索路径:
import sys from pathlib import Path # 获取project_folder的绝对路径 project_root = Path(__file__).resolve().parent.parent sys.path.append(str(project_root)) # 现在可直接导入subfolder2的模块 from subfolder2 import credentials
该方式不受运行目录限制,适配远程服务器等无法固定工作目录的场景。
注意事项
- 你添加的
__init__.py文件已满足包标识要求,无需额外修改(空文件即可)。 - 避免在
subfolder1或subfolder2目录下直接执行my_prog.py,否则仍会触发相对导入错误。
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

