结合 GitHub(远程仓库)、GitHub Desktop(版本控制工具)、VSCode(代码编辑器) 三个工具,以下是更具体的Python项目仓库搭建流程,包含工具协同操作的详细步骤:

一、整体流程概览

  1. GitHub:创建远程仓库(代码的“云端备份”)。
  2. GitHub Desktop:将远程仓库克隆到本地,管理代码提交、推送、分支等版本操作。
  3. VSCode:打开本地仓库,编写代码、管理依赖、运行测试,与前两者无缝联动。

二、详细步骤:从0到1搭建仓库

Step 1:在GitHub上创建远程仓库(云端初始化)
  1. 登录GitHub官网(https://github.com,有时需要科学上网),点击右上角“+”→“New repository”。
  2. 填写仓库信息:
    • Repository name:建议与项目名一致(如python-data-tools)。
    • Description:简要描述项目(如“一个处理CSV数据的Python工具库”)。
    • 勾选 “Add a README file”(自动生成基础说明文件)。
    • 勾选 “Add .gitignore”,并在下拉框选择 “Python”(自动生成Python专属的忽略规则)。
    • 选择许可证(如“MIT License”,开源项目必备)。
  3. 点击“Create repository”,远程仓库创建完成(如https://github.com/你的用户名/python-data-tools)。
Step 2:用GitHub Desktop克隆仓库到本地(关联本地与云端)
  1. 打开GitHub Desktop,点击左上角“File”→“Clone repository”。
  2. 在弹出的窗口中:
    • 切换到“GitHub.com”标签,找到刚创建的仓库(python-data-tools)。
    • 选择本地保存路径(如D:\projects\python-data-tools),点击“Clone”。
  3. 克隆完成后,GitHub Desktop会自动加载仓库,显示初始文件(README.md.gitignore等)。
Step 3:用VSCode打开本地仓库并搭建目录结构
  1. 在GitHub Desktop中,本地仓库名在左上角,右键仓库名称→点击“Open in Visual Studio Code”(直接用VSCode打开本地仓库)。
  2. 在VSCode的“资源管理器”(左侧目录列表,光标放入时出现右上角有增加目录和增加文件项)中,按以下结构创建目录和文件(仅示例):
python-data-tools/
├── src/                    # 源代码目录(大型项目推荐)
│   └── datatools/          # 核心包(自定义名称)
│       ├── __init__.py     # 包标识(内容可空)
│       ├── cleaner.py      # 数据清洗模块
│       └── analyzer.py     # 数据分析模块
├── tests/                  # 测试目录
│   ├── test_cleaner.py     # 测试cleaner.py
│   └── test_analyzer.py    # 测试analyzer.py
├── examples/               # 示例脚本
│   └── demo.py             # 演示如何使用核心功能
├── requirements.txt        # 依赖列表
└── README.md               # 项目说明(补充完善)
Step 4:用VSCode编写核心文件内容
(1)编写核心代码(以src/datatools/cleaner.py为例)

在VSCode中打开文件,输入功能代码:

def remove_duplicates(data: list) -> list:"""移除列表中的重复元素并保持顺序"""seen = set()return [x for x in data if not (x in seen or seen.add(x))]def trim_whitespace(text: str) -> str:"""去除字符串首尾空格"""return text.strip()
(2)编写测试代码(tests/test_cleaner.py

安装测试工具(在VSCode终端中执行,终端可通过Ctrl+``打开):

pip install pytest  # 安装pytest测试框架

编写测试用例:

from src.datatools.cleaner import remove_duplicates, trim_whitespacedef test_remove_duplicates():assert remove_duplicates([1, 2, 2, 3]) == [1, 2, 3]assert remove_duplicates(["a", "a", "b"]) == ["a", "b"]def test_trim_whitespace():assert trim_whitespace("  hello  ") == "hello"assert trim_whitespace("world") == "world"
(3)生成依赖文件(requirements.txt

在VSCode终端中导出当前环境依赖:

pip freeze > requirements.txt  # 将已安装的包(如pytest)写入文件

文件内容示例:

pytest==7.4.0
(4)完善README.md(在VSCode中编辑)

补充项目说明,包含安装、使用示例:

# Python Data Tools  
用于数据清洗和分析的轻量工具库。  ## 安装  bash
pip install -r requirements.txt## 快速使用  
python
from src.datatools.cleaner import remove_duplicates
print(remove_duplicates([1, 2, 2, 3]))  # 输出: [1, 2, 3]## 运行测试  
```bash
pytest tests/  # 所有测试通过则无报错
Step 5:用GitHub Desktop提交并推送到GitHub
  1. 回到GitHub Desktop,左侧会自动检测到VSCode中修改/新增的文件(标绿为新增,标黄为修改)。
  2. 在下方“Summary”输入提交说明(如“初始化项目:添加数据清洗模块和测试”),点击“Commit to main”(提交到本地仓库)。
  3. 点击顶部“Push origin”,将本地提交推送到GitHub远程仓库(此时GitHub网页上的仓库会同步更新)。
    注:此时若网络不稳时,用科学上网
Step 6:日常开发流程(工具协同)
  • 修改代码:在VSCode中编辑文件(自动保存或Ctrl+S)。
  • 提交变更:GitHub Desktop会实时显示修改,填写说明后“Commit”。
  • 同步远程:点击“Push origin”推送本地修改;若他人更新了远程仓库,点击“Fetch origin”→“Pull origin”拉取最新代码(避免冲突)。
  • 分支管理:在GitHub Desktop中点击“Current branch”→“New branch”创建功能分支(如feature/add-plot),在VSCode中开发完成后,通过GitHub Desktop合并到main分支并推送。

三、工具协同技巧

  1. VSCode扩展增强体验

    • 安装 “Python” 扩展(微软官方):提供代码提示、测试运行、语法检查。
    • 安装 “Git History”:在VSCode中直接查看提交历史、文件修改记录。
    • 安装 “Todo Tree”:标记代码中的TODO,方便跟踪待完成任务。
  2. GitHub Desktop与VSCode联动

    • 在GitHub Desktop中右键文件→“Open in Visual Studio Code”:快速打开修改的文件。
    • 在VSCode的左下角可直接切换分支(与GitHub Desktop同步)。
  3. 依赖管理优化

    • 复杂项目推荐用pyproject.toml替代requirements.txt,在VSCode中安装pip-tools扩展,自动维护依赖版本。

四、仓库模板复用(快速上手)

  1. 在GitHub上搜索 “python-template”,找到带星标较多的仓库(如github.com/rochacbruno/python-package-template)。
  2. 进入该模板页面,点击右上角“Use this template”→“Create a new repository”,生成基于模板的新仓库。
  3. 用GitHub Desktop克隆到本地,用VSCode打开后直接修改内容(保留模板的目录结构和配置文件)。

通过以上流程,三个工具各司其职:GitHub负责远程托管,GitHub Desktop简化版本控制,VSCode专注代码开发,形成高效的协作闭环。即使是新手,也能通过可视化操作完成规范的Python项目管理。

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

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

相关文章

iDEA Lombok 失效 和 slf log 变量失效问题

1. lombok 失效:检查下配置有没有使用注解处理器;且这个处理中有没有带上版本;版本号需要与上面引入的依赖版本一致。2. 对于找不到 log 变量的操作,则是使用下面将这个变量使用下面的代码定义出来;上面去掉 slf4j注解…

go资深之路笔记(二) sync.Pool

一、 使用 sync.Pool 减少 GC 压力,提升性能 简单讲下go的gc,它的核心原理就是三色标记法和写屏障,可以实现优秀并发处理。gc一般不会频繁调用,他是根据GOGC的值来判断,具体就是上次触发GC后总堆值大于等于上次的(1GO…

【面试笔记-Java开发岗】

目录:1. synchronized 和 ReentrantLock 的区别及应用场景2. HashMap 与 LinkedHashMap 的区别3. ConcurrentHashMap 的数据结构及 JDK1.7 与 JDK1.8 区别4. Spring 常用的模式及应用场景5. 事务的四大特性(ACID)6. 锁机制:行级锁…

CSS :has() 选择器详解:为什么它是“父选择器”?如何实现真正的容器查询?

一、前言 在传统的 CSS 中,我们只能根据元素的自身属性、类名、ID 或其子元素/兄弟元素来设置样式,却无法根据其父元素或后代元素的状态来改变自身样式。 直到 :has() 选择器的出现,这一局面被彻底改变。 :has() 被称为 “父选择器” 或 “…

李宏毅 Deep Learning

感谢李宏毅老师qwq1. 基础概念1.1 Machine Learning问题引出:预测后面几天的观看人数;初步构建模型:拟合效果不好,就是在原数据上平移了一段距离;此处构建模型的本质:利用特征工程,将“多维特征…

【AI论文】分享即关爱:基于集体强化学习经验共享的高效语言模型(LM)后训练方法

摘要:利用强化学习(RL)对语言模型(LMs)进行后训练,无需监督微调即可增强其复杂推理能力,DeepSeek-R1-Zero便证明了这一点。然而,要有效利用强化学习训练语言模型,需要进行…

工业网关在汽车冲压车间的应用:EtherNet/IP转EtherCAT集成实践

在汽车零部件冲压车间中,生产线的高效协同与精准控制是提升整体产能的关键。随着自动化设备的多样化,不同协议的设备之间的通信成为技术难点。例如,罗克韦尔PLC通常采用EtherNet/IP协议,而许多高性能机械臂则依赖EtherCAT协议。如…

【底层机制】【C++】std::move 为什么引入?是什么?怎么实现的?怎么正确用?

C++底层机制推荐阅读 【C++基础知识】深入剖析C和C++在内存分配上的区别 【底层机制】【C++】vector 为什么等到满了才扩容而不是提前扩容? 【底层机制】malloc 在实现时为什么要对大小内存采取不同策略? 【底层机制】剖析 brk 和 sbrk的底层原理 【底层机制】为什么栈的内存…

Redis面试相关

数据过期策略 惰性删除 当用到那个key的时候再检查是否过期,过期则删除,有效则返回key 优点是可以节省检查过期的时间 缺点是会浪费内存 定期删除 每隔一段时间对一些key进行检查并且删除里面的过期key 有两种模式 slow模式是定时任务,频率是…

知识输出零散没有体系怎么办

当面临知识输出零散、不成体系的困境时,其根本原因在于未能建立一个从输入、整合到输出的闭环系统。要解决这一问题,核心在于构建个人知识管理体系、掌握结构化思维与表达能力、运用合适的工具与方法进行固化、持续实践并迭代优化。这意味着,…

【C语言选择排序算法详解】+ 算法性能优化 + 动态演示实现

文章目录一、算法介绍二、算法特点三、代码实现与解析四、代码解析1. 打印数组函数2. 选择排序核心逻辑3. 动态展示实现4. 主函数五、算法优化思路与实现优化1:减少交换次数优化原理:优化2:双向选择排序优化原理:优化3&#xff1a…

栈(Java)

提示:多练才是王道,加油٩(๑❛ᴗ❛๑)۶ 栈Java1. 栈2. Java中栈的其中两种实现方式2.1 Stack类2.1.1 Stack的模拟实现2.2 LinkedList类3. 典型习题讲解3.1 逆波兰表达式求值3.2 匹配括号3.3 合理弹出序列3.4 最小栈1. 栈 栈是一种特殊的线性表,其只允许在固定的一…

LayaAir鼠标(手指)控制相机旋转,限制角度

切换天空盒脚本挂载到相机身上 const { regClass, property } Laya;regClass() export class SmoothCameraController extends Laya.Script {declare owner: Laya.Camera;// 旋转灵敏度property({ type: Number, name: "旋转灵敏度" })public rotationSensitivity:…

【数据结构入门】排序算法(4)归并排序

目录 1.排序的原理 1.1 保证子数组有序 1.2 时间复杂度 2. 递归实现 2.1 思路 2.2 代码 3. 非递归实现 3.1 思路 3.2 代码 4.面试题 4.1 题目 4.2 思路 1.排序的原理 归并排序是外排序,所谓外排序就是说能够对文件中的数据进行排序。 ①首先&#xff…

FLEXSPI_Init 硬件故障问题

使用官方例程发现FLEXSPI_Init会引起硬件故障,查阅相关帖子发现主要有两个可能:1、外部闪存配置差异修改 LUT(查找表)命令:示例中擦除扇区命令为 0xD7,写状态寄存器命令为 0x01,需分别改为 闪存…

如何用 Rust 重写 SQLite 数据库(一):项目探索

要使用 Rust 重写 SQLite 数据库,我们需要实现一个简化的关系型数据库核心功能(如 SQL 解析、存储引擎、事务管理)。以下是一个分步实践指南,包含关键代码示例。一、项目规划 我们将实现一个超简化数据库 MiniSQL,支持…

JVM之堆(Heap)

一、堆的核心特性 唯一性与共享性 每个JVM实例仅有一个堆,所有线程共享,但可通过线程私有缓冲区(TLAB)减少多线程分配冲突。内存结构演变 JDK 7及之前:堆分为新生代(Young)、老年代(…

单片机的RAM与ROM概念

RAM与ROM1、RAM与ROM2、 bss、data、heap、stack、text详细讲解3、详细探讨 TCM、OCRAM 和 HBNRAM 之间的区别及其具体作用。3.1、TCM(Tightly Coupled Memory)3.2、 OCRAM(On Chip RAM)3.3、HBNRAM (Hibernate RAM)3.4、总结1、R…

实验3:事件处理(2学时)

实验目的(1)熟练掌握 v-on 指令的用法,学会使用 v-on 指令监听 DOM 元素的事件,并通过该事件触发调用事件处理程序。(2)掌握v-on 指令修饰符的基本用法。实验内容实现购物车功能的拓展(商品数量…

商品库存扣减方案

文章目录1. Lua脚本 Redis(业界首选,综合最优)2. Redis原子命令(DECRBY 结果校验)3. Redis事务(MULTI/EXEC)4. 分布式锁(基于Redis实现)5. Redisson客户端封装&#xf…