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

同文件夹下Python文件导入失败问题求助

解决Python同文件夹下模块导入失败的问题

我来帮你排查这个导入问题,这种同目录模块导入失败的情况我也碰到过好几次,大概率是运行路径的问题或者导入方式的细节没注意到,咱们一步步来解决:

可能的原因和解决方法

1. 检查你的运行工作目录

如果是从文件夹A的位置执行python B/d.py,那Python的当前工作目录是文件夹A,而非文件夹B。这时候直接import c会找不到模块,因为Python只会在工作目录和sys.path列表里搜索模块。

解决办法:

  • 切换到文件夹B的目录下再运行python d.py,这时候直接import c应该就能正常生效。
  • 或者使用相对导入:在d.py里改成from . import c。注意这个.代表当前目录,但如果直接把d.py作为主脚本运行(比如python d.py),相对导入可能会触发报错,这时候可以看下面的方法。

2. 手动添加模块路径到sys.path

如果不想切换工作目录,或者必须从外部运行d.py,可以在d.py的开头添加代码,把当前脚本所在的文件夹(也就是B)加到Python的搜索路径里:

import sys
import os
# 获取当前脚本所在的文件夹路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 把这个路径添加到sys.path
sys.path.append(current_dir)

# 现在再导入c
import c

3. 关于__init__.py和__all__的说明

你添加的__all__ = ['c']其实主要是在使用from B import *这种导入方式时生效,用来指定哪些模块会被批量导入。直接import c的场景下,这个__all__并不会起作用,所以有没有它不影响同目录的导入。只要B文件夹里有__init__.py,它就已经是一个合法的Python包了,这部分你没做错。

验证步骤

可以在d.py里先打印一些信息来快速排查:

import os
import sys
print("当前工作目录:", os.getcwd())
print("Python搜索路径:", sys.path)

看看输出里有没有文件夹B的路径,如果没有,那就是路径的问题,按照上面的方法添加即可。

内容的提问来源于stack exchange,提问作者H.Dai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:48:41