今天在import自定义模块时遇到问题,在此记录一下。
假设文件结构如下:
----Project
main.py
----utils
a.py
b.py
我想要实现一个顺序导入main<--a<--b,即
main.py: from utils import a
a.py: import b
然而在a.py报错找不到b模块。因为从根节点位置(由sys.path中的路径决定)无法找到utils.b。
所以一种解决办法是使用相对导入,修改a.py为 from . import b。
这种方法的问题是在主目录下无法直接运行utils/a.py
所以直接使用第二种方法绝对导入,在a.py中将子目录添加到sys.path中:
import sys, os
sys.path.append(os.path.dirname(__file__))
import b
即可解决问题。