当前位置: 首页 > news >正文

GitPython03-项目setup编译

GitPython03-项目setup编译

假如我从0开始也搭建一个Python项目,并把自己的软件开源被其他人使用,我要如何从0开始一步步做起?


1-知识整理

  • 1)如何开发一个python项目->可以本地编译后,被其他项目引入->然后扬名立万
  • 2)进行源码编译->python setup.py install && pip install .

2-参考网址

  • 使用gitpython 批量克隆
  • Git的使用教程

3-上手实操

1-git submodule update --init --recursive

命令背景

在 Git 项目里,子模块(submodule)是一种把其他 Git 仓库嵌入到当前仓库中的方式。借助子模块,你能够在自己的项目里引用并使用其他独立的 Git 仓库,而且还能对这些仓库的特定版本进行管理。

命令详解

git submodule update

此命令的用途是更新项目里的子模块。当你克隆一个包含子模块的仓库时,子模块默认只是一个引用,其代码并未被实际下载。git submodule update 命令的作用就是把这些子模块的代码拉取到本地。

--init

--init 选项的功能是初始化子模块。当你首次克隆一个包含子模块的仓库时,子模块的配置信息(如远程仓库地址、分支等)会被记录下来,但子模块的代码并未被下载。使用 --init 选项,Git 会依据配置信息把这些子模块的代码拉取到本地。

--recursive

--recursive 选项的作用是递归地更新子模块。要是子模块本身还包含子模块(也就是嵌套子模块),使用 --recursive 选项可以让 Git 自动更新所有嵌套的子模块。

示例

假设你克隆了一个带有子模块的仓库:

git clone <repository-url>

在克隆完成之后,子模块的代码尚未被下载。这时,你可以使用 git submodule update --init --recursive 命令来初始化并更新所有子模块:

cd <repository-directory>
git submodule update --init --recursive

总结

git submodule update --init --recursive 命令的作用是初始化并递归地更新项目里的所有子模块,保证所有子模块的代码都被正确下载到本地。


2-如何开发一个python项目->可以本地编译后,被其他项目引入

测试项目地址:https://gitee.com/enzoism/test_git

要开发一个可以本地编译后被其他项目引入的Python项目,你可以按照以下步骤进行:

  1. 创建项目结构:组织好项目的文件夹和文件。
  2. 编写代码:实现你的功能模块。
  3. 创建setup.py:用于打包和分发你的项目。
  4. 安装依赖:列出并管理项目的依赖项。
  5. 测试:确保你的代码按预期工作。

下面是一个简单的示例来演示这些步骤。

1. 创建项目结构

假设我们要创建一个名为my_package的包,其目录结构如下:

my_package/
│
├── my_package/
│   ├── __init__.py
│   └── module.py
│
├── tests/
│   └── test_module.py
│
├── setup.py
└── README.md

2. 编写代码

module.py中编写一些简单的函数:

def add(a, b):return a + bdef subtract(a, b):return a - b

__init__.py中暴露接口:

from .module import add, subtract

3. 创建setup.py

setup.py用于描述你的包以及如何构建它。这里有一个基本的例子:

from setuptools import setup, find_packagessetup(name='my_package',version='0.1.0',packages=find_packages(),install_requires=[# 列出所有需要的依赖包],author='Your Name',author_email='your.email@example.com',description='A simple example package',long_description=open('README.md').read(),long_description_content_type='text/markdown',url='https://github.com/yourusername/my_package',  # 如果有的话classifiers=['Programming Language :: Python :: 3','License :: OSI Approved :: MIT License','Operating System :: OS Independent',],
)

4. 安装依赖

在这个例子中没有额外的依赖,但如果有的话,可以在install_requires列表中添加。

5. 测试

使用unittest或其他测试框架来测试你的代码。这里我们使用内置的unittest模块。

tests/test_module.py中编写测试用例:

import unittest
from my_package.module import add, subtractclass TestModule(unittest.TestCase):def test_add(self):self.assertEqual(add(1, 2), 3)def test_subtract(self):self.assertEqual(subtract(5, 3), 2)if __name__ == '__main__':unittest.main()

6. 打包和安装

在终端中导航到包含setup.py的目录,然后运行以下命令来构建和安装你的包:

python setup.py install
pip install .

这样,你的包就可以被其他项目通过import my_package的方式引入了。

这个artifact包含了上述提到的所有关键文件的内容。你可以根据实际需求进一步扩展和完善这个示例。



http://www.lryc.cn/news/604517.html

相关文章:

  • Directory Opus 使用优化
  • CouchDB 从入门到精通:构建高效的分布式文档数据库
  • 2025年ESWA SCI1区TOP,强化学习多目标灰狼算法MOGWO-RL+分布式混合流水车间调度,深度解析+性能实测
  • C++与AI工具(土木工程)高效编程实战
  • 从零开始,在Windows环境部署vllm
  • 如何使用 Conda 安装 Qiskit(详细教程)
  • 第七章:进入Redis的SET核心
  • Java stream 并发问题
  • Redis:缓存雪崩、穿透、击穿的技术解析和实战方案
  • 矩阵指数函数 e^A
  • 如何利用 Redis 的原子操作(INCR, DECR)实现分布式计数器?
  • 微算法科技MLGO突破性的监督量子分类器:纠缠辅助训练算法为量子机器学习开辟新天地
  • 代码随想录算法训练营第五十五天|图论part5
  • Python设计模式详解:策略模式(Strategy Pattern)实战指南
  • OpenBayes 教程上新丨仅激活 3B 参数可媲美 GPT-4o,Qwen3 深夜更新,一手实测来了!
  • 代码随想录day50图论1
  • Apache Ignite 与 Spring Boot 集成
  • 学习游戏制作记录(冻结敌人时间与黑洞技能)7.30
  • nginx安装配置Lua模块的支持
  • 我的世界模组开发教程——资源(1)
  • 【AI】入门级提示词模板:适用于ChatGPT、文心一言等主流模型
  • 【ee类保研面试】数学类---线性代数
  • 从0开始学习R语言--Day62--RE插补
  • JVM对象创建与内存分配机制深度剖析
  • 基于Catboost的铁路交通数据分析及列车延误预测系统的设计与实现【全国城市可选、欠采样技术】
  • 【JVM篇11】:分代回收与GC回收范围的分类详解
  • 数据分析师进阶——95页零售相关数据分析【附全文阅读】
  • JVM 性能调优实战:让系统性能 “飞” 起来的核心策略
  • 观远 ChatBI 完成 DeepSeek-R1 大模型适配:开启智能数据分析跃升新篇
  • 【Spring】一文了解SpringMVC的核心功能及工作流程,以及核心组件及注解