GitPython03-项目setup编译
假如我从0开始也搭建一个Python项目,并把自己的软件开源被其他人使用,我要如何从0开始一步步做起?
1-知识整理
- 1)如何开发一个python项目->可以本地编译后,被其他项目引入->然后扬名立万
- 2)进行源码编译->python setup.py install && pip install .
2-参考网址
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项目,你可以按照以下步骤进行:
- 创建项目结构:组织好项目的文件夹和文件。
- 编写代码:实现你的功能模块。
- 创建setup.py:用于打包和分发你的项目。
- 安装依赖:列出并管理项目的依赖项。
- 测试:确保你的代码按预期工作。
下面是一个简单的示例来演示这些步骤。
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 + b
def subtract(a, b):
return a - b
在__init__.py
中暴露接口:
from .module import add, subtract
3. 创建setup.py
setup.py
用于描述你的包以及如何构建它。这里有一个基本的例子:
from setuptools import setup, find_packages
setup(
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, subtract
class 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包含了上述提到的所有关键文件的内容。你可以根据实际需求进一步扩展和完善这个示例。