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

Python子模块引入

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

项目A子模块设置

设置子模块信息

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

[submodule "xxxx_submodule"]path = xxxx_submoduleurl = https://github.com/xxxxx.git

设置子模块搜索路径

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

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  #更新最新代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型带来新安全机遇

当前网络空间安全面临攻击隐蔽难发现、数据泄露风险高和违法信息审核难等挑战。大模型展现出强大的信息理解、知识抽取、意图和任务编排等能力&#xff0c;为网络空间安全瓶颈问题提供了新的解决思路和方法。与此同时&#xff0c;大模型发展也催生了恶意软件自动生成、深度伪造…

架构师之路-学渣到学霸历程-22

NFS文件共享服务器 今天开始了云计算-SRE架构师的第二个阶段&#xff0c; 第二阶段就是服务阶段了&#xff1b;第一个分享的就是NFS服务&#xff1b; 文件共享服务&#xff1b; 早上就了解一下NFS原理&#xff1b; 1、NFS文件共享服务器 NFS&#xff1a;就是network file sy…

【YOLO学习】YOLOv5详解

文章目录 1. 网络结构2. 结构整体描述2.1 输入端2.2 Backbone2.3 Neck2.4 Head 3. 模块细节3.1 Focus模块3.2 SPPF3.3 Bounding Box损失函数 4. 训练策略 1. 网络结构 1. 目标检测的模型框架大体都是以下图示这样的结构&#xff1a; 2. 关于 YOLOv5 的网络结构其实网上相关的讲…

数据结构 - 队列

队列也是一种操作受限的线性数据结构&#xff0c;与栈很相似。 01定义 栈的操作受限表现为只允许在队列的一端进行元素插入操作&#xff0c;在队列的另一端只允许删除操作。这一特性可以总结为先进先出&#xff08;First In First Out&#xff0c;简称FIFO&#xff09;。这意味…

你是否真的弄懂了 OAuth 2.0?

目录 OAuth 2.0 中的基本概念 OAuth 2.0 参与方 OAuth 2.0 典型的授权流程 使用 OAuth 2.0 需要注意的安全问题 OAuth 2.0 的使用场景 小结 OAuth 2.0&#xff08;Open Authorization 2.0&#xff0c;开放授权 2.0&#xff09;是被广泛使用的一种开放的标准授权协议&…

php常用设计模式之工厂模式

引言 在日常开发中&#xff0c;我们一些业务场景需要用到发送短信通知。然而实际情况考虑到不同厂商之间的价格、实效性、可能会出现的情况等 我们的业务场景往往会接入多个短信厂商来保证我们业务的正常运行&#xff0c;而不同的短信厂商&#xff08;如阿里云短信、腾讯云短信…

[Java基础] Lambda 表达式

往期回顾 [Java基础] 流程控制 [Java基础] 运算符 [Java基础] 基本数据类型 [Java基础] Java HashMap 的数据结构和底层原理 [Java基础] 面向对象编程 [Java基础] 异常处理机制 [Java基础] 集合框架 [Java基础] 输入输出流 目录 概述 Lambda 表达式的基本语法 应用…

使用Uniapp开发微信小程序实现一个自定义的首页顶部轮播图效果?

在Uniapp中开发微信小程序&#xff0c;并实现自定义首页顶部轮播图的效果&#xff0c;可以通过使用Uniapp的组件如swiper和swiper-item来完成。这是一个常见的需求&#xff0c;下面是一个完整的示例代码&#xff0c;展示如何实现一个简单的自定义轮播图效果。 创建页面结构 首…

R语言机器学习算法实战系列(八)逻辑回归算法 (logistic regression)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍教程下载数据加载R包导入数据数据预处理数据描述数据切割构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性保存模型总结系统信息介绍 …

MySQL数据库和表的基本操作

文章目录 一、数据库的基础知识 背景知识数据库的基本操作二、数据类型 字符串类型数值类型日期类型三、表的基本操作 创建表查看表结构查看所有表删除表 一、数据库的基础知识 背景知识 MySQL是一个客户端服务器结构的程序 主动发送数据的这一方&#xff0c;客户端(client…

“智改数转”转了什么?

万界星空科技专门针对数字化改造申报的MES系统具有显著的技术优势和实施效果&#xff0c;能够为制造型企业提供全方位、高效、可靠的数字化转型支持。项目合作可以私信或者百度上海万界星空科技官网。 “智改数转”是一个综合性的过程&#xff0c;涉及企业多个方面的转型和升…

【python实战】利用代理ip爬取Alibaba海外版数据

引言 在跨境电商的业务场景中&#xff0c;数据采集是分析市场、了解竞争对手以及优化经营策略的重要环节。然而&#xff0c;随着越来越多企业依赖数据驱动决策&#xff0c;许多跨境电商平台为了保护自身数据&#xff0c;采取了更严格的防护措施。这些平台通过屏蔽大陆IP地址或部…

Windows安装RabbitMQ 4.0.2(图文教程)

本章教程,主要记录在Windows 10上RabbitMQ 4.0.2的安装过程。 一、下载安装包 1、官方下载(速度不稳定) Erlang:https://github.com/erlang/otp/releases/download/OTP-26.0/otp_win64_26.0.exe RabbitMQ 4.0.2:https://github.com/rabbitmq/rabbitmq-server/releases/do…

设计模式之设计模式分类

java设计模式总体上分为3大类&#xff0c;即&#xff1a; 1&#xff09;创建型模式 2&#xff09;结构型模式 3&#xff09;行为型模式 1、创建型模式 创建型模式提供创建对象的机制&#xff0c;主要解决对象的创建问题&#xff0c;封装复杂的创建过程&#xff0c;解耦 对象的创…

【Spring声明式事务失效的12种场景测试】

文章目录 一.Spring声明式事务是什么&#xff1f;二.Spring事务失效的12种场景1.访问权限问题 小结 一.Spring声明式事务是什么&#xff1f; Spring声明式事务是一种通过配置的方式管理事务的方法&#xff0c;它通过注解或XML配置来声明哪些方法需要事务管理&#xff0c;从而将…

JRT怎么从IRIS切换到PostGreSql库

1.执行M导出得到建库脚本文件 2.下载生成的脚本到本地D盘 3.修改驱动为PostGreSql 4.修改连接串 5.到PostGreSql里面创建一个jrtlis的数据库&#xff0c;模式为jrt 6.启动网站点击导入脚本按钮 导入完成了就可以正常使用PostGreSql库了

OpenCV高级图形用户界面(14)交互式地选择一个或多个感兴趣区域函数selectROIs()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 允许用户在给定的图像上选择多个 ROI。 该函数创建一个窗口&#xff0c;并允许用户使用鼠标来选择多个 ROI。控制方式&#xff1a;使用空格键或…

Google FabricDiffusion:开启3D虚拟试穿新篇章

随着数字化转型的步伐不断加快,时尚界也在探索如何利用最新技术为消费者带来更加沉浸式的购物体验。在这一背景下,Google 推出了一项名为 FabricDiffusion 的新技术,这项技术能够将2D服装图像中的高质量织物纹理转移到任意形状的3D服装模型上,从而为3D虚拟试穿提供了更为真…

HashMap优点总结及源码分析

HashMap优点总结: 可存储不同类型的数据&#xff1a;使用泛型来定义键和值的类型&#xff0c;兼容所有数据类型高效的查找和插入操作&#xff1a;通过key的hash映射&#xff0c;实现快速的查找和插入操作。时间复杂度基本为O(1)灵活的容量调整&#xff1a;可根据数据量增长自行…

WebSocked基础

一. WebSocket 基本概念 WebSocket是什么&#xff1f; WebSocket 是基于 TCP 的一种新的应用层网络协议。它提供了一个全双工的通道&#xff0c;允许服务器和客户端之间实时双向通信。因此&#xff0c;在 WebSocket 中&#xff0c;浏览器和服务器只需要完成一次握手&#xff…