如何从其他文件夹导入依赖?解决跨文件夹模块导入的依赖报错问题
解决Python跨文件夹导入依赖问题
先确认你的目录结构(假设A和B是同级目录):
项目根目录/ ├─ A/ │ └─ main.py └─ B/ ├─ B1.py ├─ B2.py └─ B3.py
不用修改B文件夹里的任何代码,两种方法搞定:
方法1:直接把B文件夹加入模块搜索路径
在main.py开头加这段代码:
import sys import os # 拿到B文件夹的绝对路径:先找当前main.py的位置,再往上一级定位到B b_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../B") sys.path.append(b_dir) # 现在可以正常导入了 from B1 import classB1
原理:把B文件夹加到Python的模块搜索列表sys.path后,B1、B2这些py文件就相当于顶层模块,B1里的from B2 import classB2会直接在搜索路径里找到B2.py,不会报错。
方法2:按Python包规范导入(更推荐)
如果项目需要长期维护,建议用这种更规范的方式:
- 在B文件夹里新增一个空的
__init__.py文件(这不算修改原有代码,只是加个空文件,符合要求) - 在main.py里加这段代码:
import sys import os # 拿到项目根目录的绝对路径(包含A和B的那个文件夹) root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(root_dir) # 把B当作包来导入 from B.B1 import classB1
原理:加了__init__.py后,B就变成了合法的Python包,Python会自动识别B1里的from B2 import为包内的相对导入,从而正确找到B2、B3这些模块。
内容的提问来源于stack exchange,提问作者Simon Bebek
相关产品推荐
相关产品推荐

