You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何兼顾私有版本包与Git Submodule的多场景开发需求

私有包与Git Submodule的灵活切换方案

完全可以实现你描述的理想工作流程,下面是实际项目中验证过的操作步骤和经验:

默认模式(部署/日常开发)

  • 将通用Python代码(如models)打包为私有版本包,托管到内部私有PyPI仓库(比如公司自建的PyPI、GitLab PyPI仓库等)
  • 在主项目的requirements.txt中直接指定私有包的版本,例如:
    my-shared-models==1.2.3
    
  • 日常开发或部署时,执行pip install -r requirements.txt即可完成安装,和使用公开PyPI包的体验完全一致

定制模式(开发阶段)

当需要修改通用代码时,按以下步骤切换到submodule模式:

  1. 先卸载已安装的私有包:
    pip uninstall -y my-shared-models
    
  2. 引入通用代码的Git submodule(如果主项目之前未配置过该submodule):
    git submodule add <通用代码仓库地址> ./my_shared_models
    
    如果之前已经配置过submodule,只需初始化并拉取代码:
    git submodule update --init
    
  3. 将本地submodule目录以可编辑模式安装到当前环境:
    pip install -e ./my_shared_models
    
    此时修改./my_shared_models中的代码,主项目会实时生效,无需反复提交、发版私有包

切换回默认模式

完成通用代码的修改并提交到其仓库、发布新版本包后,按以下步骤回归:

  1. 卸载可编辑模式的submodule包:
    pip uninstall -y my-shared-models
    
  2. 清理submodule相关文件(若不需要保留本地submodule目录):
    git submodule deinit -f ./my_shared_models
    git rm -f ./my_shared_models
    rm -rf .git/modules/my_shared_models
    
  3. 更新主项目requirements.txt中的私有包版本号为新发布的版本,然后重新安装:
    pip install -r requirements.txt
    

额外经验与注意事项

  • 在主项目的.gitignore中添加my_shared_models/,避免切换submodule时出现Git冲突
  • 可以编写简单的Shell脚本封装切换逻辑,比如switch-to-submodule.sh和switch-to-package.sh,减少手动操作成本
  • 开发完成后,务必确保通用代码的修改已提交到其仓库并发布新版本,再更新主项目的依赖版本,避免其他开发者或部署环境出现依赖缺失

内容的提问来源于stack exchange,提问作者Alexander Fernandez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:52:26