Python多模块多层依赖开发场景下的封装与导入方案咨询
Python统一父包实现方案
1. 搭建标准包目录结构
首先创建统一父包(示例命名为data_flow_core,可自定义),目录结构如下:
your_project_root/ ├── pyproject.toml # 包配置文件 └── data_flow_core/ # 超级父包目录 ├── __init__.py # 包标识文件,可留空或配置暴露接口 ├── utility.py # 原Utility模块 ├── read.py # 原Read模块 ├── pd1.py # 原Process Data 1模块 ├── pd2.py # 原Process Data 2模块 └── manage.py # 原Manage模块
2. 编写包配置文件
在pyproject.toml中写入如下配置,使用标准setuptools打包规则:
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "data_flow_core" version = "0.1.0" authors = [ { name="Your Name", email="your.email@example.com" } ] description = "统一数据处理父模块" requires-python = ">=3.8"
如果需要对外暴露特定接口,可以在父包的__init__.py中添加导入规则,例如:
from .manage import run_pipeline __all__ = ["run_pipeline"]
3. 内部模块导入规范
所有子模块之间的调用统一使用基于父包名的绝对导入,无需额外修改Python路径:
- pd2模块调用pd1:
from data_flow_core.pd1 import process_func - 所有模块调用utility:
from data_flow_core.utility import common_func - manage调用read、pd1、pd2:
from data_flow_core.read import read_config、from data_flow_core.pd1 import xxx
4. 开发模式安装
在your_project_root目录下执行命令:
pip install -e .
该命令会将父包以可编辑模式安装到当前Python环境,开发阶段修改任意子模块代码无需重新安装,实时生效。所有导入逻辑完全符合Python规范,不会出现路径异常问题,同时所有内部模块都封装在data_flow_core父包命名空间下,不会出现全局模块名冲突。
效果验证
任意目录下打开Python终端,执行如下导入命令无报错即为配置成功:
import data_flow_core from data_flow_core import manage, utility, pd2
内容的提问来源于stack exchange,提问作者Abs_0_
相关产品推荐
相关产品推荐

