Python项目引入其他项目作为子模块

Python子模块引入

背景,项目A为主项目,项目B为封装的通用逻辑(可被多个项目使用)。项目A和项目B都是独立更新的,两者互不影响只有引用关系

项目A子模块设置

设置子模块信息

创建.gitmodules文件,写入子模块信息

python 复制代码
[submodule "xxxx_submodule"]
	path = xxxx_submodule
	url = https://github.com/xxxxx.git

设置子模块搜索路径

项目A的启动文件中增加如下代码

python 复制代码
project_root_path = os.path.dirname(os.path.abspath(__file__))   # 根据具体文件定位项目A根目录
directory_path = os.path.join(project_root_path, 'xxxx_submodule')  # 获取子模块代码目录 
if directory_path not in sys.path:
    sys.path.insert(0, directory_path)

直接引用import子模块文件

例如文件目录如下

复制代码
project/
│   
│   ├──function/
│   ├── __init__.py
│   └── function.py
│   │
│   └──xxxx_submodule/
│         │
│         ├── submodule1/
│         │   ├── __init__.py
│         │   └── module1.py
│         │
│         └── submodule2/
│             ├── __init__.py
│             └── module2.py
│ 
└── main.py

function.py文件可以直接引用submodule1、submodule2(编辑器静态代码检测可能会报错无引用,实际执行可以引用)

复制代码
import submodule1
import submodule2

子模块的更新

新下载主工程,需要使用如下命令,下载主工程同时会自动下载子模块

复制代码
git clone --recurse-submodules <repository_url>

子模块作为主工程的submodule,下载更新主工程代码不会主动更新子模块,需要通过执行

复制代码
git submodule update --init --recursive

更新最新子模块工程代码。如果以上命令无法更新到最新代码,尝试以下命令

复制代码
cd UIAIdriver_submodule   
git status #确保在master分支   
git checkout master #不在master分支要切换到master分支   
git pull  #更新最新代码
相关推荐
EQUINOX11 小时前
【论文阅读】| MoCo精读
论文阅读·人工智能·python·深度学习·机器学习
用户8356290780512 小时前
使用 Python 自动化 Excel 公式和函数:完整指南
后端·python
敲代码的嘎仔2 小时前
实习日志day6--实习日志day6--title命名规范化&businessType纠正&补充缺失的@Log注解&报警与通信模块补充&产出阶段总结文档
java·开发语言·人工智能·git·python·实习·大二
江华森2 小时前
Python 实现高德地图找房(一):环境搭建与数据爬虫
开发语言·爬虫·python
VIP_CQCRE3 小时前
用 Ace Data Cloud 快速接入 OpenAI Chat Completions:对话、流式、多轮和多模态一篇打通
python·ai·openai·api·教程
AOwhisky3 小时前
Python 学习笔记(第三期)——流程控制:条件判断与循环结构
运维·笔记·python·学习·云原生·流程控制·循环
老迟到的茉莉3 小时前
Hermes 是谁?跟 Claude Code 差在哪
开发语言·python
Day(AKA Elin)4 小时前
【Day】MTP(Multi Token Prediction)技术学习
python·深度学习·学习·llama
程序员小远5 小时前
接口测试之文件上传
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
江华森5 小时前
Python 实现高德地图找房(三):地图可视化与高德 JS API
开发语言·javascript·python