如何在Python库中通过父目录引用实现跨模块导入?
跨模块导入解决方案
你的目录结构
Tools/ __init__.py connector1/ __init__.py connector1.py connector2/ __init__.py connector2.py
可行的导入方法
1. 相对导入
在connector2.py中使用相对路径引用:
from ..connector1 import connector1
注意:这种方式下不能直接运行connector2.py,必须从Tools的父目录以包的形式导入使用,比如在父目录下执行:
from Tools.connector2 import connector2
2. 手动添加Python路径
在connector2.py开头加入以下代码,将Tools的父目录添加到Python的搜索路径中:
import sys from pathlib import Path # 获取Tools目录的父目录路径并加入sys.path sys.path.append(str(Path(__file__).parent.parent.parent))
之后就可以直接使用:
from Tools.connector1 import connector1
这种方式支持直接运行connector2.py。
3. 可编辑模式安装库(推荐)
在Tools的父目录下执行以下命令,以可编辑模式安装你的库:
pip install -e .
安装后,Python会将Tools视为正式安装的包,无论在哪个路径下,都可以像Pandas那样使用绝对导入:
from Tools.connector1 import connector1
这是Python库开发的标准流程,能彻底解决导入问题。
关于__init__.py的说明
你之前在Tools/__init__.py中导入相关类未解决问题,是因为仅在__init__.py导入不会自动将包路径加入Python的搜索列表,必须结合上述三种方法之一,才能让子模块正确识别父包的路径。
内容的提问来源于stack exchange,提问作者user23464334
相关产品推荐
相关产品推荐

