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

Python从兄弟文件夹导入模块失败问题求助

解决兄弟文件夹模块导入问题

我之前也碰到过完全一样的困扰!虽然已经给每个文件夹加了__init__.py,但Python的模块搜索路径规则才是核心问题——它默认只会找当前脚本所在目录和系统的site-packages,兄弟文件夹不在这个搜索列表里。下面给你几个实用的解决方案,你可以按需尝试:

方案1:手动将父目录添加到sys.path

这是最直接的临时解决方案,在fileA.py的最开头添加这段代码,把父目录(也就是包含gfolder、codefolder、utilfolder的那个文件夹)加入Python的搜索路径:

import sys
import os

# 获取当前脚本的绝对路径,再往上跳一级到父目录
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(parent_dir)

之后你就可以正常导入兄弟文件夹的模块了,比如要导入utilfolder里的util_module.py,直接写:

from utilfolder import util_module
# 或者用别名简化调用
import utilfolder.util_module as util

方案2:使用相对导入(注意使用场景)

如果你的项目是作为一个完整的Python包来使用的,可以用相对导入语法,但不能直接运行fileA.py作为脚本(比如python codefolder/fileA.py会报错)。在fileA.py里这么写:

# .. 表示上一级目录(父目录),然后指定兄弟文件夹和目标模块
from ..utilfolder import util_module

要运行这个脚本的话,得从父目录外面,用模块方式启动:

python -m codefolder.fileA

方案3:设置PYTHONPATH环境变量(永久生效)

如果你不想每次在代码里加sys.path的代码,可以把父目录添加到系统的PYTHONPATH环境变量里,这样Python每次启动都会自动搜索这个目录:

  • Linux/macOS:在终端里执行(如果要永久生效,把这句话加到/.bashrc或/.zshrc里):
    export PYTHONPATH="/path/to/your/parent_folder:$PYTHONPATH"
    
  • Windows:在命令提示符里执行(永久生效的话,去系统环境变量里添加PYTHONPATH):
    set PYTHONPATH=C:\path\to\your\parent_folder;%PYTHONPATH%
    

额外注意事项

  • __init__.py文件不需要写任何内容,只要存在就可以标记这个文件夹为Python包。
  • 检查文件夹名、模块名的拼写,Python是大小写敏感的,别把UtilFolder写成utilfolder了。
  • 如果用相对导入,一定要确保你的代码是作为包的一部分被导入,而不是直接执行脚本——直接执行的话,Python会把当前脚本当作顶层模块,..这种相对路径就会失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:34:53